typeof
操作符(和 instanceof
一起)或许是 JavaScript 中最大的设计缺陷, 因为几乎不可能从它们那里得到想要的结果。
尽管 instanceof
还有一些极少数的应用场景,但typeof
只有一个实际的应用,而这个应用却不是用来检查对象的类型。(注:这个实际应用是用来检测一个对象是否已经定义或者是否已经赋值)。
注意: 由于 typeof
也可以像函数的语法被调用,比如 typeof(obj)
,但这并不是一个函数调用。 那两个小括号只是用来计算一个表达式的值,这个返回值会作为 typeof
操作符的一个操作数。 实际上不存在名为 typeof
的函数。
JavaScript 类型表格
Value | Class | Type |
---|---|---|
“foo” | String | string |
new String(“foo”) | String | object |
1.2 | Number | number |
new Number(1.2) | Number | object |
true | Boolean | boolean |
new Boolean(true) | Boolean | obj |