在javascript中,如果数组,函数是对象原型,那么为什么typeof返回

时间:2014-11-20 10:46:39

标签: javascript typeof

在javascript中,如果数组,函数是对象原型,那么为什么typeof返回包含数组的变量的对象,并为包含函数引用的变量返回Function。

1 个答案:

答案 0 :(得分:1)

the ECMAScript 3.0 specification(第46-47页):

  

11.4.3运营商类型

     

制作UnaryExpression: typeof UnaryExpression是   评估如下:

     
      
  1. 评估UnaryExpression。
  2.   
  3. 如果Type(Result(1))不是Reference,请转到步骤4.
  4.   
  5. 如果GetBase(Result(1)) null ,请返回“undefined”
  6.   
  7. 调用GetValue(Result(1))。
  8.   
  9. 根据下表返回由Type(Result(4))确定的字符串:
  10.   
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万条搜索结果。 :)