위의 ECMA Script Specification의 The Abstract Equality Comparison Algorithm 부분을 보면

NaN == false의 경우는 적용 순서는 대충 1) 7번이 적용된 후, 2) 1-c-1이 적용되는 것 같다.

1) NaN == Number(false)이기 때문에 NaN == 0이 되며 자료형이 같아진다.

2) NaN == 0이기 때문에, Type(x)는 Number이며, x는 NaN이다. 그러므로 1-c-1이 적용되 false가 반환된다.

결국 우리가 잘못 생각했던 점은 false를 Number형으로 형변환하려 했던 것이 아니라,

NaN을 Boolean형으로 형변환시키려 했다는 점이다.

어쨌든 이 글을 통해 말하고 싶었던 점은 왠만하면 == 쓰지마라.


블로그에 올릴 건데 뭐 틀린 점 있냐?