sup*_*led 30 javascript arrays jquery
我想知道在javascript中尾随数组的逗号是否有效?
var settings = {
'foo' : oof,
'bar' : rab,
};
Run Code Online (Sandbox Code Playgroud)
VS
var settings = {
'foo' : oof,
'bar' : rab
};
Run Code Online (Sandbox Code Playgroud)
请注意,第二个示例在最后一个键/值之后没有逗号.
jAn*_*ndy 52
大多数浏览器和实现都允许使用尾随逗号,大BUT是"Internet Explorer".
大多数InternetExplorer版本中的尾随逗号会导致严重问题.它会抛出奇怪,疯狂,奇怪和无理的错误 ......你不知道你在哪里!这太可怕了,你会陷入深刻而严重的沮丧中.这种疾病也有一个名字,"厄运的邪恶逗号"它被称为一次.
结论:永远......永远!在Javascript中使用尾随逗号.
Anu*_*rag 31
从历史上看,ES3在定义对象文字时不允许使用尾随逗号.这是IE确实做对的一件事,但大多数其他的bowser供应商违反了规范,并允许它反正.从技术上讲,这是其他支持它的浏览器中的一个错误.在ES3中,a ObjectLiteral
被定义为,
ObjectLiteral { } { PropertyNameAndValueList }
后来ES5通过与大多数人一起解决了这个问题,并通过将其置于规范中来使尾随逗号合法化.现在ObjectLiteral
定义为,
ObjectLiteral { } { PropertyNameAndValueList } { PropertyNameAndValueList , }
注意结尾处的尾随逗号.
尽管尾随逗号是在对象文字中定义的,但根据ES5,仍然不允许使用JSON.因此,虽然以下对象文字是有效的,
{ foo: "bar", }
Run Code Online (Sandbox Code Playgroud)
以下JSON不是,
'{ "foo": "bar", }'
JSONObject的语法是,
JSONObject { } { JSONMemberList } JSONMemberList JSONMember JSONMemberList , JSONMember JSONMember JSONString : JSONValue
简而言之,如果您不想担心规范或浏览器怪癖,请不要添加尾随逗号.