10個常見的JavaScript BUG
就算最牛的JavaScript開發者也會犯錯。有時候導致程式的執行結果和預期不一樣,
1.相等混淆
x是否和y相等?x是否為真?在JavaScript中,如何正確地做相等判斷很重要,但似乎很多人搞不清楚。簡單概括一下,主要是下面三種情況:條件判斷(if, &&, etc.),相等操作符(==),和嚴格相等操作符(===)。
甚至,有的時候會不小心把賦值(=)當做相等操作符使用,千萬不要搞錯了!
避免使用賦值(=)
賦值(=)將右邊的運算式賦值給左邊的變數,例如:
var a = 3;該語句聲明了一個新的變數a,值為3。
運算式可以是程式中的任何東西,想像把它類比為語言中的名詞,操作符(+,-,*,/)類比為動詞。初學者一個常見的錯誤就是誤用賦值(=)作為相等判斷符。
if (a=4){...}代碼並不會像預期的執行那樣。
慎用相等操作符
相等操作符(==)和他的雙胞胎不等操作符(!=)非常好用,但也很危險,儘量少用。接下來介紹為什麼:
在相等符號下,0和0是相等的!因為解譯器發現左右類型不一致,首先做了隱式類型轉換。這會導致各種各樣的問題,然後一出錯還很難找到問題原因。
如果你真的想判斷一個字串包含的數位和某個數位是否真的相同,建議你這麼做:
parseInt(0) === parseInt('0')所以,建議使用嚴格相等/不等操作符。
0 === '0'會返回false。
2.丟失的大括弧
當程式變得複雜,特別是如果你使用JavaScript物件來存儲資料的話,大括弧會越來越多。
你能看出來哪裡少了東西嗎?當不確定的時候,一個好的編輯器將會非常有用。Sublime Text有一個很不錯的功能,當你把游標放在某個大括弧的時候,和它匹配的大括弧會高亮出來。
3.不匹配的引號
在定義字串的時候,
總的來說,個人認為是一個非常靈活且好用的功能,但是一定要小心!
缺少必要的圓括號
該錯誤往往在條件陳述式出錯處,特別是有多個條件的時候。
if (x > y) && (y < 1000) {...}如果你注意看,會發現少了括弧,正確的應該是這樣:
if ((x > y) && (y < 1000)) {...}4.缺少分號
JavaScript中的語句都應該分號結束。
最好的策略是都要加分號。
5.大寫錯誤
JavaScript對大小寫敏感,你需要對變數和函數的命名小心,不能把大小寫搞錯了。比如,Document物件的getElementById函數經常被寫錯為getElementByID。
6.在載入前引用
JavaScript的代碼通常是按循序執行,如果你引用了後面才創建的元素將會報錯。
在腳本執行的時候,流覽器還不知道myDiv是什麼。
避免這個問題的方法有很多:
將代碼放到最後,也就是