请选择结果为真的表达式:( )
A. null instanceof Object B. null === undefined C. null == undefined D. NaN == NaN
这个题目跑一遍大家其实都可以知道结果,这个题目看似没有什么太大意义,但是你可以试着跑一下
typeof null //"object"
那为何 null instanceof Object //false呢?
引用Bosn Ma的发言
null可以用来表示对象不存在,但本身属于NULL类型。
typeof null === "object"
并非因为null是"Object",而是历史遗留问题。JS创始人也曾讨论并尝试修复typeof null === "null", 但在V8引擎中实现后导致大量问题,因此提案被拒绝。
详情参见:
http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null