typeof 引出的问题

Brendan 在实现 document.all 的时候玩了个小技巧,那就是你可以正常的使用 document.all,但你无法检测到它的存在
// undetected, 未被发现值; 只有这个个例,typeof document.all => "undefined", !!document.all => false
// 违反ECMA 规范,现已被废弃

typeof blabla === 'undefined'; // 一个未定义的变量,或者一个定义了却未赋初值的变量
typeof (blabla + 1) // error
typeof 操作符返回一个字符串,表示未经求值的操作数(unevaluated operand)的类型。
typeof(43) // typeof 是一个运算符,所以后面的括号表示表达式,instanceof,in也是这样
// 括号表达式中只有一个操作数时不会求值
在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是0。由于 null 代表的是空指针(大多数平台下值为0x00),因此,null的类型标签也成为了0,typeof null就错误的返回了"object".(reference)
该现象有待于在ECMAScript 6中被修复 . 正确的返回值将成为 typeof null === 'null'.(该提议已被否决)