2011-08-30 21 views
4

可能重複:
Why avoid increment ("++") and decrement ("--") operators in JavaScript?增量/減量運算符在JavaScript中被認爲是不正確的形式嗎?

我最近一直通過JSLint的運行我所有的JavaScript,它總是讓我在我的增量運營商Unexpected '++'。我也注意到有一個JSLint選項容忍 ++/- 。

它被認爲是不好的形式使用i++/i--

+2

此imo只是Crockfords的個人偏好。我不會停止使用++或 - 不久的將來。 – Loktar

回答

5

如果我理解正確,它在JSLint中的原因是因爲++ii++之間存在顯着差異,並且許多開發人員不一定明白具體關於添加何時完成的影響,與其他操作有關周圍。

例如:

var i = 0; 
if(i++) { 
    //does this get run or not? 
} 
if(--i) { 
    //and what about this one? 
} 

這就是爲什麼克羅克福德認爲不好的做法,而更喜歡更明確+=1

但是,一般來說,我沒有這種問題++;我非常樂意使用它,並且我會忽略JSLint告訴我不要(大部分時間!)。

這是關於JSLint的重要內容 - 它不會告訴你實際的錯誤;它告訴你的一切都是一個建議。其中一些是優秀的建議(例如,你永遠不應該使用with);有些是好的建議,表明代碼不好;其中一些只是一些問題,應該單獨考慮。作爲一名開發人員,更重要的是,您需要知道爲什麼要提出建議,而不是實際解決問題。一旦你明白了他們被指出的原因,你就可以決定你的代碼中給定的實例是否有問題以及如何解決它。

希望有所幫助。

1

我不認爲它在Javascript中被認爲是不好的形式,大多數程序員很難正確地使用這些運算符。

+0

你能舉一個錯誤地使用它的例子嗎?我一直使用它沒有問題,但現在我很好奇,如果我曾經錯誤地使用它。 –

+0

您必須記住增量發生的順序與何時可用。如果你只用過它自己或慣用的表達,它不太可能會濫用它。但是,像'var x = i ++ * 3;'這樣的事情會導致意想不到,如果你使用'i + 1'或'i + = 1',這是不可能的。 –

2

不,我想這可能會有爭議,但認真的事情很快就會在他們的教育或書籍或其他方面瞭解到這個運營商。這建議惹惱了我。

+1

我100%同意。我認爲它只是將Crockfords的個人口味加入到JSLint中。我也不同意他在每一行都有一個單獨的'var',但那是一個不同的討論。 – Loktar

+0

我同意。我只是想讓自己更好地成爲一名JavaScript開發人員,這對我來說很奇怪。 –

1

而不是使用++/--它被認爲是一個更好的做法,使用+=/-=

x += 1;而不是x++;

這應該是爲了提高可讀性並避免由於過多使用「代碼技巧」而導致的輸入錯誤。

就我個人而言,我發現使用此方法代替默認的++/- 操作符會更有用,因爲該數字將被IDE着色,並且更易於發現。