
위의 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형으로 형변환시키려 했다는 점이다.
어쨌든 이 글을 통해 말하고 싶었던 점은 왠만하면 == 쓰지마라.
블로그에 올릴 건데 뭐 틀린 점 있냐?
너이새끼 깃헙갤엔 공부 2시간...뭐? - dc Cpp
이런 게 프로그래밍보다 재미쪄