Javascript/Javascript

자바스크립트가 어떠한 방법으로 비교를 하는가? (Do you know x==y Equality Comparison Algorithm in javascript?)

bugtype 2019. 3. 23. 22:34

자바스크립트가 어떠한 방법으로 비교를 하는가?

어떤 x,y와를 비교한다고 했을때 x==y 를 어떤식으로 비교하여 truefalse을 내보내는지 알아봅시다.

  1. x와 y의 type이 같은지 먼저 체크합니다.

    • 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

  2. x가 null이고 y가 undefined인지 확인

  3. x가 undefined 이고 y가 null인지 확인

  4. x가 Number, y가 String이면, x==ToNumber(y)를 비교

  5. x가 String이고 y가 Number이면 ToNumber(x)==y를 비교

  6. x가 Boolean이면, ToNumber(x)==y

  7. y가 Boolean이면, x == ToNumber(y)

  8. x가 String or Number가 아니고, y가 Object이면, x==ToPrimitive(y)

  9. x가 Object 이고, y가 String or Number아 아니면, ToPrimitive(x) == y,

  10. false

위와 같이 내부적으로 비교하게 됩니다.

만약 제일 빠른것은 type이 같을때가 되겠지요?

function1 -> 서로 type이 다름

function2 -> 서로 type이 같음



티스토리에서는 1. 2. 문단번호가 처리가 안되는 현상이 있습니다....