2011-07-25 30 views
2

为什么集锦与任何验证器(Mozilla或JSLint的)抱怨这个代码:集锦抱怨JavaScript的分号

var collectionOfValues = { 
    key0 : value0; 
    key1 : value1; 
    key2 : value2; 
}; 

它工作正常,但不与;

即使从好的部分代码不会验证:

var myObject = { 
    value: 0; 
    increment: function (inc) { 
     this.value += typeof inc === 'number' ? inc : 1; 
    } 
}; 

回答

8

它的抱怨,因为这是一个语法错误。在对象字面上,你用逗号分隔,而不是分号。

var collectionOfValues = { 
    key0 : value0, 
    key1 : value1, 
    key2 : value2 
}; 

这两个例子都会被我所知道的每个JavaScript实现拒绝。

var myObject = { 
    value: 0, 
    increment: function (inc) { 
     this.value += typeof inc === 'number' ? inc : 1; 
    } 
}; 

自从大爆炸以来,情况就是如此。

+0

太好了,谢谢你的确认。非常奇怪的是,JavaScript内部的代码 - The Good Parts是错误的,并且提及使用JSLint进行验证的新API的文档也是错误的,以同样的方式。似乎他们都在说;是好的,那么也许他们确实没事。 –

2

,因为正确的语法是

var collectionOfValues = { 
    key0 : value0, 
    key1 : value1, 
    key2 : value2, 
}; 

的JS对象

+4

,之后value2无效 – Bastian

+0

起诉它是:P它会运行。这不是一个好习惯,但它会运行。我有意将它与原文并置放置在那里,突出了一件事情,即当变化发生变化时。 –

+1

@Joseph其实IE6将无法运行http://www.enterprisedojo.com/2010/12/19/beware-the-trailing-comma-of-death/ –

0

我知道,这是一个迟到的回答,但好的部分是对实际。 (提问者可能知道这一点,但对于任何其他读者来说......);我的副本的日期是2008年,这篇文章是2011年。它用逗号打印。

这是困扰我的下位... ;-)