是否有一個具體的原因,我看到很多人寫的Javascript:操作數的比較運算順序
if(1 === a) {...}
代替
if(a === 1) {...}
我已經給出了其中我寫了類似的答案Array === obj.constructor
這是有人問我,他經常看到人們這樣寫而不是obj.constructor === Array
。
那麼,我使用哪種方式真的很重要?
是否有一個具體的原因,我看到很多人寫的Javascript:操作數的比較運算順序
if(1 === a) {...}
代替
if(a === 1) {...}
我已經給出了其中我寫了類似的答案Array === obj.constructor
這是有人問我,他經常看到人們這樣寫而不是obj.constructor === Array
。
那麼,我使用哪種方式真的很重要?
尤達條件如此命名是因爲條件的字面意義是第一位的,而可變排第二。例如,下面是一個尤達條件:
if ("red" === color) {
// ...
}
這就是所謂的尤達條件,因爲它的內容,「紅色的顏色」,類似星球大戰人物尤達說話的方式。相較於安排操作數的另一種方式:
if (color === "red") {
// ...
}
這通常寫着,「顏色是紅色的」,這可以說是形容比較更自然的方式。
尤達條件的支持者強調,不可能錯誤地使用=而不是==,因爲你不能分配一個字面值。這樣做會導致語法錯誤,並會在早期通知您錯誤。因此,這種做法在早期的編程工具中尚不可用的情況下非常普遍。
尤達條件的反對者指出,工具使我們更好的程序員,因爲工具會捕獲錯誤地使用=而不是==(ESLint會爲你解決這個問題)。因此,他們認爲,模式的效用不會超過代碼在使用Yoda條件時需要的可讀性。
有趣。這支部隊的力量很強。 – shinobi
可能是因爲'x === y' x首先被評估,如果x是NaN false按照規範ASAP返回http://www.ecma-international.org/ecma-262/6.0/ #sec-strict-equality-comparison – gurvinder372
這是一種安慰劑的做法:人們相信它會解決他們最重要的發展問題。 – zerkms