javaScript:数组中最后一组值后可以出现逗号吗?

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中使用尾随逗号.

  • 我知道它已经很晚了,但万一有人发现了这一点.更现代版的IE(IE9/10)将完美地迎合这一需求.然而,<IE8,并期待痛苦. (6认同)
  • 我可能是戏剧女王:-P (2认同)

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 

简而言之,如果您不想担心规范或浏览器怪癖,请不要添加尾随逗号.

  • 签署..即使它做的事情,IE总是被指责:( (2认同)