[항해99] Javascript 간단 퀴즈

posinity·2022년 11월 18일
0

JavaScript

목록 보기
10/31

1. console.log(typeof NaN)

답 : "number"

NaN 함수 > Not a Number의 줄임말이지만, Number 자료형에 속함!

2. console.log([] == ![]);

답 : true

https://bugtypekr.tistory.com/53 참고

  1. JS 추상비교(==)에서 빈배열은 무조건 0으로 강제 변환함

⇒ 0 == ![]

  1. 앞에 ! 가 있으면 boolean 형태로 변환.

    Boolean([]) // true

    ture의 반대니까 false가 됨

⇒ 0 == false

3 . false는 숫자로 바뀌면 0으로 변환

⇒ 0 == 0

  1. 0 == 0 은 true임

3. 문제

const num = 01234;
console.log(num);

답 : 668

문자열이 숫자 0 으로 시작하면 8진수로 인식한다(구형브라우저 O, 신형브라우저X)
0x, 0X 로 시작한다면 해당 문자열을 16진수 숫자로 인식한다.
앞부분 빈 공백을 두고 나오는 문자는 모두 무시되어 NaN을 반환한다.

4. console.log("hello" + + "world”);

답 : "helloNaN”

  1. + "world” 에서 +가 앞에 있으므로 문자형이 숫자형으로 변환되어 NaN이 뜸

"hello" + NaN

  1. NaN이 문자형이 됨

"hello" + "NaN"

5. console.log(+”111”);

답 : 111

+"문자열" 하면 숫자형으로 바뀜

6. console.log(+[]);

답 : 0

숫자 변환을 수행할 때 빈 문자열을 변환해야 하는 특정 규칙이 ECMAScript 사양에 있기 때문에 0으로 변환함
stackoverflow 참고

7. +true

답 : 1

8. console.log([]+{});

답 : "[object Object]”

나의 계산법

  1. typeof [] // "object" 임

  2. "object" + {} 이므로 {}를 문자형으로 변환
    String({}) // "[object Object]"
    가 나옴

  3. "object[object Object]"

빈 배열이 0인가?

그러면 0 + {} 이 되는데
{}은 숫자로 변환하면 NaN임 // NaN 나옴

[]은 빈문자형으로 변환된다


콘솔 여러개 찍어봤을때

console.log([]+[]) // ""
console.log([]+0) // "0"
console.log([]+"") // ""
console.log([]+"dd") // "dd"
console.log([]+[1,2,3]) //"1,2,3"
console.log(""+[1,2,3]) //"1,2,3"
console.log(""+"[object Object]") //"[object Object]"

[]은 빈문자형으로 변형되는 무언가가 있는듯
그래서 "" + [object Object] 여서 "[object Object]"로 나오는거 같다!

9. console.log(parseInt(null));

답 : NaN

parseInt() : 문자열을 숫자로 바꾸는데, "null"처럼 문자열일 경우 NaN을 띄운다

10. console.log(parseInt(null,24));

답 : 23

16진수는 F까지 읽을수있음
24진수는 N까지 읽을수있음

n까지 읽을 수 있으므로 n만 읽고 나머지를 날려버림

profile
문제를 해결하고 가치를 제공합니다

0개의 댓글