微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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错误.

原文地址:https://www.jb51.cc/js/429015.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐