2012-09-10 25 views
0

對於此代碼:JSLint的錯誤:預期的條件表達式,而是看到了一個分配

var i = 0; 
for (i < menuitem.length; i += 1;) 

JSLint的返回:

Expected a conditional expression and instead saw an assignment.

Expected an identifier and instead saw ')'.

,並拒絕繼續掃描。 此代碼正常工作,但是出了什麼問題?我怎麼能用「if」語句來寫這個? (如果這就是jslint的含義)。

感謝您的幫助!

+1

我不確定你的'for'循環是如何工作的。看起來這將是一個無限循環。 – Ryan

+0

@minitech它通過菜單項列表運行。這應該怎麼寫呢? – cmplieger

+0

您的for循環是無限循環。 JSlint正確地警告你。我認爲你想寫的是:for(;我 slebetman

回答

2

呀,JSLint的相當兇狠。正如其他人指出的那樣,你不是在正確的地方填充東西,但除此之外,JSLint要求你在for循環的初始化部分中放置。不過,有幾個選項可以讓你的遊戲變得更好,而不會干擾你的邏輯。我最喜歡的是剛剛復位i(即使它已設置):

var i = 0; 
for (i = 0; i < menuitem.length; i += 1) { 
    /** do stuff **/ 
} 

這讓JSLint的快樂,也保證,如果你決定使用它在相同的詞法範圍另一for循環,i被重置。另一種選擇是在那裏只是折騰null,以填補空間(如果你不想要重置的i值):

var i = 0; 
for (null; i < menuitem.length; i += 1) { 
    /** do stuff **/ 
} 

都工作得不錯,並安撫不斷所謂令人擔憂的JSLint。但是,如果您只是將初始化部分留空(不包括JSLint),則沒有人會真正關心。你可以試試JSHint,因爲它對這種事情有點寬容。

+2

沒有點設置'i = 0'這樣連續兩次。我的觀點是,如果'i'存在爲'for'循環計數器,那麼它的初始值是'for'循環實現的邏輯的一部分,所以它應該在沒有初始值的情況下聲明爲'var i;'然後初始化('= 0; ...'。)(這也應該通過JSLint) – nnnnnn

+0

同意,@nnnnnn。當我在這種情況下聲明它時,我通常不會初始化'i'。然而,OP有可能只發布他的代碼的相關部分,並且''我被預先使用了viously。這不太可能,但這是可能的。沒有意見要追究他,只是因爲某些未包括的代碼而被告知我錯了。 :-) – Pete

+0

是的,很酷。順便說一句,我不是故意要爲此「追究」你。 – nnnnnn

1

您的for循環有點奇怪,第二部分應該是循環的條件,而不是您的任務。

您必須始終按訂單(initialisation; condition; step)訂購部件。

var i = 0; 
for (; i < menuitem.length; i += 1) 

我剛把你的分號從尾部移到了開頭。或者,如果您願意,您可以將變量聲明和賦值放在第一部分內。

+0

似乎無法通過驗證: – cmplieger

+0

@SnippetSpace做了驗證消息更改嗎?說同樣的東西? –

+0

@SnippetSpace:通過驗證它需要:'for(var i = 0; i slebetman

0
for (var i = 0; i < menuitem.length; i += 1) { 
    // code 
} 

或者

var i = 0; 

for (; i < menuitem.length; i += 1) { 
    // code 
} 
+0

兩個似乎都沒有通過驗證:( – cmplieger

+0

加載,但想通了,看看我的迴應。 – cmplieger

0

從您的代碼段,我會認爲我簡直是用來控制循環的週期數的變量。正確的代碼是

for (var i = 0; i < menuitem.length; i += 1) { 
// code 
} 

這是標準化的聲明和語法 - 至少對於我現在能想到的語言來說。這就是這種類型的循環的重點 - for循環是這樣設計的,所以作者可以簡單地寫一行代碼,而如果他/她想做一個while循環的話就可以寫更多的代碼。

0

找到了!下面是驗證了確切的答案:

var i; 
for (i = 0; i < menuitem.length; i += 1) { 
    // code 
} 

var目錄應該說外面的JSLint:■

+0

不,儘管它可能是其他東西,JSLint不like。它抱怨的是賦值'i + = 1'出現在預期的狀態,這可能是'i RobG

相關問題