javascript – elided数组元素是否会产生自己的属性?

前端之家收集整理的这篇文章主要介绍了javascript – elided数组元素是否会产生自己的属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

JavaScript中使用文字语法定义数组时,可以使用其他逗号省略数组元素:

a = [1,2,3];   // 1,3
b = [1,3]; // 1,undefined,3

我注意到在访问值时,省略的值不是“自己的属性

b.hasOwnProperty(1); //false

相反,如果您定义一个显式设置undefined的数组,它将被设置为“自己的属性”:

c = [1,3];
c.hasOwnProperty(1); //true

是否在规范中定义了如何分配省略的数组元素的行为?如果是这样,哪个规格和哪里?

(可选奖金)是否可靠的跨浏览器,如兼容性表格所证明的?

最佳答案

Is the behavior for how omitted array elements are assigned defined in a spec?

是.

If so,which spec

ECMAScript规范.至少在修订版3,5,5.1和6中.

and where?

在数组文字表达式的语义中,由Array Initializer部分(ES5,ES6)给出.它说

[…]缺少的数组元素有助于数组的长度,并增加后续元素的索引[,但它们没有定义.

在表达式的求值中,它们被简单地跳过 – 它们被计算但不在数组实例上创建数据属性,这与创建元素的赋值表达式相反.

Is it reliable cross-browser?

是的,即使是旧的Internet Explorers也可以.唯一的怪癖是they count a trailing comma as an elision,它应该不是,并且得到.length错误.

猜你在找的JavaScript相关文章