天天看點

JS程式設計建議——27:小心if隐藏的Bug

建議27:小心if隐藏的Bug

很多程式員都犯過這樣低級的錯誤:

if(a = 1){

alert(a);

}

把比較運算符(==)錯寫為指派運算符(=)。這樣的Bug一般很難發現,由于它是一個合法的表達式,不會導緻編譯錯誤。由于此表達的傳回值為非0數值, JavaScript會自動把它轉換為true,是以這樣的分支結構的條件永遠成立。

為了防止出現這樣低級而又令人讨厭的錯誤,建議在條件表達式的比較運算中,把常量寫在左側,把變量寫在右側,這樣即使把比較運算符(==)錯寫為指派運算符(=),也會導緻編譯錯誤,因為常量是不能夠被指派的,進而能夠即時發現這個Bug。例如:

if(1 == a){

下面這個錯誤也是很容易發生的:

var a=2;

if(1 == a);

{

當在條件表達式後錯誤地附加一個分号時,整個條件結構的邏輯就發生了根本的變化。用代碼來描述上面結構的邏輯如下:

if(1 == a)

;

也就是說,JavaScript會把條件表達式之後的分号視為一個空語句,進而改變了原來設想的邏輯。是以,要避免這樣的低級錯誤,應該牢記條件表達式之後不允許使用分号,當然也可以通過把大括号與條件表達式書寫在一行内來防止疏忽。

繼續閱讀