2 == 2.valueOf()
==
=== (형과 값이 같아야한다 , 일치)
는 2개 또는 는 3개는 어떻게 동작하는가?
valueOf() / toString()
이거는 뭔가?
기본형 === 같은 레퍼런스를 사용하고있음 ( 기본형과 기본형인경우 값과 타입이 같아야함 )
참조형 === 다른 레퍼런스를 사용하고있으므로 참조가 일치해야한다 (객체와 객체인 경우 참조가 일치해야한다)
참조형은 [1,2] === [1,2]
a = {a:1}
b = a //여기서 b 가 a를 참조함!! 즉 b 를 수정하면 a를 수정하는 거다.
b.a = 2
a.a = 2 이게 왜 2가되냐면 같은 레퍼런스를 갖고있으니까
a === b
즉 a 와 b 는 일치한다
———————
그럼 는 2개는 뭐냐??
== 동치
두 값이 일치하는것
일치를 하면 동치라는것(동치는 참임)
undefined == null
0 == ‘0’ 문자를 숫자로 바꿔야함..그럼 참임
true == ‘1’
[2,3] == ‘2,3’ valueOf -> toSting
0 == ‘a’ 이건 NaN으로바뀐다 낫어넘버
NaN == NaN 이건 틀림
만약 참조형과 기본형을 비교하면
[2,3] == ‘2,3’
배열 2 3 을 기본형으로 바꿔줘야한다 valueOf() 를 써서바꿔준다 그래서 기본형이 아닌경우엔 다시 toString() 을 쓴다
결국 2, 3 으로 바뀌고
2,3 === ‘2,3’ 이렇게 된다
이 결과는 참이 된다.
——————
에러 메세지
SyntaxError
TypeError
———————
팁>
1 .toSting(); 앞에 띄어쓰기를 한경우 에러가 안나고 (이건 어 숫자뒤에 아무것도없네 하고,,정상작동함 )
1.toString(); 그냥 썻을경우 에러가 났다 (어? 쩜뒤에 소수부 숫자가나와야되는데? 문자가 나오네하고 에러발생시킴)
왜?
숫자앞에 쩜이 있는 순간 아 소수부 구나 라고 인식을하기때문이다. (그러므로 함수를 넣을때 숫자뒤에는 쩜을 바로 찍지않고 띄워서 코딩한다 )
원래 숫자 쩜 뒤에는 숫자가 나와야 한다
1.11 이렇게..
근데 1.toString() 이렇게 문자가 나와버리면 에러를 발생시키므로
한칸 띄워서 1. toString(); 이렇게 써주는 것이다.
근데 또 1.23.toString() 하면 이건 또 정상작동 한다 왜냐면 1.23.하면 두번쨰쩜은 이런숫자가 존재하지않기때문에 당연히 두번쨰 쩜 뒤에는 저렇게 써도 무방하다
아무튼
9 .aa(); 이렇게 쩜을 한칸띄워서 찍으면 아 뒤에 소수부가 없어라고 인식하므로 정상작동