gpt4 book ai didi

javascript - 省略的数组元素是否会产生自己的属性?

转载 作者:搜寻专家 更新时间:2023-11-01 04:23:16 24 4
gpt4 key购买 nike

在 JavaScript 中,当您使用文字语法定义数组时,可以使用额外的逗号来省略数组元素:

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

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

b.hasOwnProperty(1); //false

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

c = [1, undefined, 2, 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?

在数组文字表达式的语义中,由数组初始化器 部分(ES5ES6)给出。它说

[…] 缺少的数组元素会增加数组的长度并增加后续元素的索引[,但它们] 未定义。

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

Is it reliable cross-browser?

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

关于javascript - 省略的数组元素是否会产生自己的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com