자바스크립트

[자바스크립트] 문제를 통한 개념잡기 - 1

반응형

if(2 == ___ ) 중에 밑줄에 값이 들어올때 true가 아닌 경우?


1. Number(2)

2. Number(2).valueOf()

3. Number(2).toString()

4. 2.valueOf()

5. 2 .toString()



다음 중 true가 아닌 건 무엇일까요?


한번씩 꼭 생각해본 후 답을 체크해보세요!




답 : 4번 (스크롤 하시면 답 보입니다)




※ ==와 === 차이는?


  • ===는 '일치'

기본형 : String, number, boolean, undefined, null, symbol
참조형 : 배열, 객체 등

기본형일 때는 '형'과 '값'이 일치해야 True를 반환한다.
( 즉, 1 === '1'은 각각 숫자와 문자열이기 때문에 False )

참조형일 때는 같은 레퍼런스여야 True를 반환한다.
( [1,2] === [1,2]는 레퍼런스가 다르므로 False )


같은 레퍼런스란 무엇인가?

1
2
3
4
= {a:1}
= a
b.a = 2;
a.a = ?
cs
a.a도 2가 된다 -> a와 b는 같은 레퍼런스이므로 값이 변경됨! ( b === a )


  • ==는 '동치'

===는 ==에 포함되는 부분. 즉 일치는 동치에 포함!



null = undefined는 동치 (암기하자)

0 == '0' -> '0'을 숫자로 바꿔줌

true == '1' -> true도 숫자1, '1'도 숫자 1로 바꿔주면서 ( 1 === 1 ) 성립됨

[2,3] == '2,3' -> [2,3]은 valueOf와 toString을 통해 2,3으로 되며 ( 2,3 === 2,3 ) 성립됨



1 .toString();과 1.toString();의 차이점


인터프리터의 입장에서 생각해보자. '1.'처럼 숫자 다음에 점을 찍으면 인터프리터는 이후에 숫자가 나온다고 생각한다.


따라서 1.toString()은 숫자가 아닌 문자가 나온 상태이므로 Syntax에러가 발생하게 된다.


1.23.toString();은? -> 첫 점 이후 숫자가 나왔기 때문에 정상 작동!



따라서 1 .toString();은 오류가 발생하지 않는다.


결국 보기 중에 false에 해당하는 것은 4번이 됩니다~

반응형