JavaScript typeof是否曾经返回过;数组";?

JavaScript typeof是否曾经返回过;数组";?,javascript,arrays,Javascript,Arrays,我已经在各种开源项目中看到了这个习语: it instanceof Array || typeof it == "array" 我知道后半部分在ECMAScript 5(或6)中不可能是真的,但是否有过从typeof返回“array”的实现?或者这是一种虚假的防御性编程?不是,至少从ECMAScript的第一个版本开始 (1997年6月) 11.4.3-操作员的类型 生产UnaryExpression:typeofUnaryExpression为 评价如下: 计算一元表达式 如果Type(Re

我已经在各种开源项目中看到了这个习语:

it instanceof Array || typeof it == "array"

我知道后半部分在ECMAScript 5(或6)中不可能是真的,但是否有过从typeof返回“array”的实现?或者这是一种虚假的防御性编程?

不是,至少从ECMAScript的第一个版本开始

(1997年6月)

11.4.3-操作员的
类型

生产UnaryExpression:
typeof
UnaryExpression为 评价如下:

  • 计算一元表达式
  • 如果Type(Result(1))是Reference,而GetBase(Result(1))是null,则返回
    “undefined”
  • 调用GetValue(结果(1))
  • 根据下表返回由类型(结果(3))确定的字符串:

    • 未定义:
      “未定义”
    • 空:
      “对象”
    • 布尔值:
      “布尔值”
    • 编号:
      “编号”
    • 字符串:
      “字符串”
    • 对象(本机且未实现[[Call]]):
      “对象”
    • 对象(本机和实现[[Call]]):
      “函数”
    • 对象(主机):依赖于实现
  • (1998年8月)

    没有变化

    (1999年12月)

    没有相关的变化

    11.4.3-操作员的
    类型

    生产UnaryExpression:
    typeof
    UnaryExpression为 评价如下:

  • 计算一元表达式
  • 如果类型(结果(1))不是参考,则转至步骤4
  • 如果GetBase(结果(1))为null,则返回
    “undefined”
  • 调用GetValue(结果(1))
  • 根据下表返回由类型(结果(4))确定的字符串:

    • 未定义:
      “未定义”
    • 空:
      “对象”
    • 布尔值:
      “布尔值”
    • 编号:
      “编号”
    • 字符串:
      “字符串”
    • 对象(本机且未实现[[Call]]):
      “对象”
    • 对象(本机和实现[[Call]]):
      “函数”
    • 对象(主机):依赖于实现
  • ECMAScript 4


    此规范已被放弃。

    只是为了完成,通常使用以下方法来检查阵列:

    var arr = [1, 2, 3];
    
    arr instanceof Array
    arr.constructor === Array
    
    或者,如果要检查对象属性:

    var obj = {
        name: "myObject",
        list: [
    
        ]
    };
    

    你真的在实际代码中看到了吗?请显示一个链接…我想说的是无知而不是防御。无知不是一种冒犯,只是不知道一些东西,开发人员写了不知道的东西,这是没有意义的。我认为《dojo》中曾经有更多的例子,但我只看到一个: