在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 举报,一经查实,本站将立刻删除。