避免隱含的型別轉換
JavaScript在比較變數時會隱含的做型別轉換。這就是為什麼 false == 0 或 " " == 0
會回傳 true 的原因。
為了避免隱含的型別轉換造成困惑,應總是用 === 和 !== 運算子來比較,可以同時比較
運算式結果的型別跟值:
var zero = 0;
if (zero === false) {
//不會執行,因為 zero 是 0,不是 false
}
if (zero == false) {
//這個區塊會執行...
}
另一個思想流派認為如果 == 能滿足需求,使用 === 則顯得累贅。例如當你使用 typeof
你知道會回傳一個字串,所以沒有理由去使用嚴格比對。儘管如此,JSLint要求使用嚴格比較
;這樣確實讓程式碼更一致,並在閱讀程式碼的時候可以少花一點精神。
335012寫到:
節錄自: JavaScript 設計模式 P.22
引用:
避免隱含的型別轉換
JavaScript在比較變數時會隱含的做型別轉換。這就是為什麼 false == 0 或 " " == 0
會回傳 true 的原因。
為了避免隱含的型別轉換造成困惑,應總是用 === 和 !== 運算子來比較,可以同時比較
運算式結果的型別跟值:
var zero = 0;
if (zero === false) {
//不會執行,因為 zero 是 0,不是 false
}
if (zero == false) {
//這個區塊會執行...
}
另一個思想流派認為如果 == 能滿足需求,使用 === 則顯得累贅。例如當你使用 typeof
你知道會回傳一個字串,所以沒有理由去使用嚴格比對。儘管如此,JSLint要求使用嚴格比較
;這樣確實讓程式碼更一致,並在閱讀程式碼的時候可以少花一點精神。
所以小弟認為,見仁見智..
另外,要把 if 敘述提到 for 外面的話..
是否就不需使用 if 敘述了?
直接 return "沒中"; 或是 alert("沒中"); 會比較好?
謝謝提出想法。