在JavaScript中使用文字语法定义数组时,可以使用其他逗号省略数组元素:
a = [1, 2, 3]; // 1, 2, 3
b = [1, , 2, 3]; // 1, undefined, 2, 3
Run Code Online (Sandbox Code Playgroud)
我注意到在访问值时,省略的值不是"自己的属性"
b.hasOwnProperty(1); //false
Run Code Online (Sandbox Code Playgroud)
相反,如果您明确设置数组undefined,则将其设置为"自己的属性":
c = [1, undefined, 2, 3];
c.hasOwnProperty(1); //true
Run Code Online (Sandbox Code Playgroud)
是否在规范中定义了如何分配省略的数组元素的行为?如果是这样,哪个规格和哪里?
(可选奖金)是否可靠的跨浏览器,如兼容性表格所证明的?
\n\n\n规范中定义了如何分配省略的数组元素的行为吗?
\n
是的。
\n\n\n\n\n如果是的话,哪个规格
\n
ECMAScript 规范。至少在修订版 3、5、5.1 和 6 中是如此。
\n\n\n\n\n哪里?
\n
在数组字面量表达式的语义中,由数组初始值设定项部分给出(ES5、ES6)给出。它说
\n\n[\xe2\x80\xa6] 缺少的数组元素会增加数组的长度并增加后续元素的索引[,但它们]未定义。
\n\n在计算表达式时,它们会被简单地跳过 - 它们会被计数,但不会在数组实例上创建数据属性,这与创建元素的赋值表达式相反。
\n\n\n\n\n跨浏览器可靠吗?
\n
是的,即使是老的 Internet Explorer 也会这样做。唯一的怪癖是他们将尾随逗号视为省略号,而事实不应该是这样,结果出错了.length。
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |