2011-07-25 31 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年。它用逗號打印。

這是困擾我的下位... ;-)