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》中曾经有更多的例子,但我只看到一个: