2017-07-16 42 views
1

我的問題是關於在不同函數中命名多個迭代計數器的一般良好實踐。假設我有3個不同的功能,每個功能都有for循環。在我使用的第一個for(var i=0; i<5; i++) 所有其他功能也持有類似for循環。我應該在每個函數結束時在每個循環之後更改i計數器到0,還是在每個函數的每個for循環中聲明3個不同變量作爲迭代計數器?好的實踐命名多個迭代計數器

+0

什麼說反對他們命名我? –

+1

聽起來像你正在使用全局變量時,它應該是範圍 – MildlySerious

+0

@MildlySerious好的,謝謝!那就對了。我聲明全局i = 0;所以在每個循環後它永久地變成i = x;在每個循環之後。現在我明白了。謝謝。 –

回答

3

我有3個不同功能

如果是三個不同的功能,你宣佈你的循環for (vari = 0),這將是一個不同的每個這些。在這種情況下,var聲明函數範圍內的變量(see MDN)。所以,我一個絕對優良的名稱(主要是,我看到Ĵķ爲嵌套循環(*)),而且也沒有必要區分。

但是:如果沒有var,如果你不是嚴格模式,將具有全球範圍。

補充說明:截至今天(ES6)的,我寧願使用for (leti = 0...),如果在這種情況下的作用域是循環不使用外循環,因爲(MDN)。


(*)儘管,如果需要三個嵌套循環,什麼可能是錯誤的。

+1

謝謝:)你給我提供了更多真正有價值的信息! :) –

2

除非每個函數內部的交互以某種方式相關,否則應該單獨聲明,而不管名稱如何。

另外,除非你使用全局字段i每個代碼塊i變量只能在本地範圍內,所以不需要重置任何東西。

基本上,我不會在全局範圍內專門爲迭代共享任何變量,如果適用,我會將此循環功能移入它自己的作用域函數中。

+0

是的,這確實是我的問題。我現在會記住這一點!非常感謝你:) –

+0

不用擔心。只是注意到你在評論中也得到了幫助,隨時接受這個答案,快樂的編碼! – dkanejs

+1

謝謝!我接受這個答案! :) –