어떤 x,y와를 비교한다고 했을때 x==y 를 어떤식으로 비교하여 true 와 false을 내보내는지 알아봅시다.
x의 type이 Undefined이면 true ( 타입이 같으니까 y는 굳이 할필요가 없습니다.)
x의 type이 Null true
x의 type이 Number이면
x가 NaN이면 false
y가 NaN이면 false
x와 y의 값이 같으면 true
x가 +0 y가 -0이면 true
y가 -0 y가 +0이면 true
false
x가 null이고 y가 undefined인지 확인
x가 undefined 이고 y가 null인지 확인
x가 Number, y가 String이면, x==ToNumber(y)를 비교
x가 String이고 y가 Number이면 ToNumber(x)==y를 비교
x가 Boolean이면, ToNumber(x)==y
y가 Boolean이면, x == ToNumber(y)
x가 String or Number가 아니고, y가 Object이면, x==ToPrimitive(y)
x가 Object 이고, y가 String or Number아 아니면, ToPrimitive(x) == y,
false
위와 같이 내부적으로 비교하게 됩니다.
만약 제일 빠른것은 type이 같을때가 되겠지요?
function1 -> 서로 type이 다름
function2 -> 서로 type이 같음
티스토리에서는 1. 2. 문단번호가 처리가 안되는 현상이 있습니다....
'Javascript > Javascript' 카테고리의 다른 글
Javascript에서 Array는 Array가 아니다? (0) | 2019.03.31 |
---|---|
javascript this에 대해서 제대로 알아봅시다. (0) | 2019.02.27 |
apply, call, bind 차이 (0) | 2018.12.22 |