在javascript中,如果数组,函数是对象原型,那么为什么typeof返回包含数组的变量的对象,并为包含函数引用的变量返回Function。
答案 0 :(得分:1)
每the ECMAScript 3.0 specification(第46-47页):
11.4.3运营商类型
制作UnaryExpression: typeof UnaryExpression是 评估如下:
- 评估UnaryExpression。
- 如果Type(Result(1))不是Reference,请转到步骤4.
- 如果GetBase(Result(1)) null ,请返回“undefined”。
- 调用GetValue(Result(1))。
- 根据下表返回由Type(Result(4))确定的字符串:
醇>
Type Result
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Object (native and doesn’t implement [[Call]]) "object"
Object (native and implements [[Call]]) "function"
Object (host) Implementation-dependent
我在1.0规范中找不到typeof
的任何引用,虽然维基百科引用了2.0规范,但我无法在线找到它。
虽然georg表达了一种可爱的情绪,但似乎typeof
一元运算符在初始发布后的某个时间被添加到JavaScript中(所以有人认为必须将其放入其中)。
也就是说,有很多方法可以解决这些限制。只需谷歌“fixing typeof”......大约有4170万条搜索结果。 :)