2017-06-15 45 views
0

我想結合各種代碼,所以我想提前宣佈i的開始。試圖重寫循環,得到jslint錯誤

OLD

var i, 
    max_i = 4; 


for (i = 2; i<= max_i; i += 1) 
{ 
    //things 
} 

var i = 2, 
    max_i = 4; 


for (; i<= max_i; i += 1) 
{ 
    //things 
} 

的問題是,我收到的各種錯誤中的JSLint

  • 預計 ')',而是看到 '< ='。
  • 預期';'而是看到'我'。
  • 預期'{'和intead看到'max_i'。

該代碼在兩種情況下均可正常執行。

+0

什麼jshint的版本?我沒有看到這些錯誤報告 – JavaKungFu

+0

版本1.0.4,使用netbeans(最新) – AllisonC

回答

1
for (i; i<= max_i; i += 1) 
{ 
    //things 
} 
+0

這固定它,我會的時候會接受。 – AllisonC

-2

您可以預先聲明並初始化i,但仍必須在循環配置中將其設置爲循環變量。而且,如果在循環配置中初始化它,則會更清楚,因爲調試會更容易。

var i , max_i = 4; 

for (i = 2; i <= max_i; i++) { 
    //things 
} 

而且,最好是始終把開大括號(})在同一行,因爲它的定義是有一定的情況下,在JavaScript中,在那裏將它放在下一行可能會導致聲明代碼中的自動分號插入錯誤。

最後,要將值增加1,可以使用++ unaray運算符而不是+=1

+0

1.我認爲這只是編碼風格的問題。我更喜歡他們排隊。從來沒有問題。 2.如果我使用++運算符,則jslint會給出錯誤,所以我已將其更改爲i + = 1。 – AllisonC

+0

「,但您仍然必須將其設置爲循環配置中的循環變量」why ** must **? 'var i = 0; for(;;){console.log(i ++);如果(i> 1)break;}' –

+1

@AllisonC正如我在我的回答中所述,這是一種常見的誤解,認爲這只是編碼風格的首選。這是一種風格,可以在正確的環境下導致代碼中的實際錯誤。 –

0

JSLint可以幫助您編寫更好的代碼,相信它,它不是味道或其他。

它抱怨,因爲不初始化for()被認爲是醜陋的(壞風格)。

您應該一如既往地初始化它。我也會盡量不定義變量,但聲明它們,然後如下所示初始化它們。我現在也會用"use strict"。不這樣做是有點不愉快的。外部功能是避免全局和非功能範圍的代碼:

/*jslint for */ 
 

 
(function() { 
 
    "use strict"; 
 
    var i; 
 
    var max_i; 
 

 
    max_i = 4; 
 
    for (i = 2; i <= max_i; i += 1) 
 
    { 
 
     // things 
 
    } 
 
}());

+0

我一直在使用「嚴格使用」,如果我沒有使用它就會抱怨:) – AllisonC

+0

啊,好的:)我在代碼片段中沒有看到它。 – pid