gpt4 book ai didi

javascript - 数组和对象中的尾随逗号是规范的一部分吗?

转载 作者:IT老高 更新时间:2023-10-28 13:14:15 25 4
gpt4 key购买 nike

是 JavaScript 中的尾随逗号标准,还是大多数浏览器(如 Chrome 和 Firefox)都容忍它们?

我以为它们是标准的,但 IE8 在遇到一个后就吐了——当然 IE 不支持某些东西几乎不代表它不标准。

这是我的意思的一个例子(在书籍数组的最后一个元素之后):

var viewModel = {
books: ko.observableArray([
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } }, // <--right there
]),
currentTemplate: ko.observable("bookTemplate1"),
displayTemplate: function() { return viewModel.currentTemplate(); }
};

最佳答案

规范:ECMAScript 5ECMAScript 3


Section 11.1.5在 ECMAScript 5 规范中:

ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }

所以是的,它是规范的一部分。

更新:显然这是 ES5 中的新功能。在 ES3(第 41 页)中,定义只是:

ObjectLiteral :
{ }
{ PropertyNameAndValueList }

对于数组字面量 (Section 11.1.4),它更有趣(更新: 这在 ES3 中已经存在):

ArrayLiteral :
[ Elisionopt ]
[ ElementList ]
[ ElementList , Elision_opt ]

(其中Elision_opt是Elisionopt,意思是Elision是可选的)

省略定义为

Elision :
,
Elision ,

所以,像

这样的数组字面量
var arr = [1,2,,,,];

完全合法。这将创建一个包含两个元素的数组,但将数组长度设置为 2 + 3 = 5

不要对 IE 期望太高(IE9 之前)...

关于javascript - 数组和对象中的尾随逗号是规范的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246618/

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