JavaScript 語法中常見的陷阱

一、區分大小寫

二、單引號與雙引號

a) 沒有特殊的區別,但大多數的WEB開發者都選擇使用單引號而不是雙引號

三、換行

a) 無法你使用哪種引號來創建字符串,字符串中間都不能包含強制換行符;

四、如果你在同一頁面中組合使用了多個庫和不同來源的代碼,而這些腳本恰好需要使用被你覆蓋的核心函數完成相應的功能,那麼就可能會得到意外的結果;

五、匿名函數

a) 匿名函數是一種在不帶名稱的函數,

六、解析域和作用域

a) Function myFunction(){

var myVariable=’inside’;

}

var myVairable=’outside’;

myFunctio();

如果內部去掉爲myVariable賦值時使用的關鍵字var ,那麼myVariable的作用域將會解析到外部。(var 關鍵字決定了哪個函數是特定變量的作用域鏈的終點,同樣的邏輯也適用於取得變量值的情況);

七、迭代對象

a) Var all=document.body.getElementsByTagsName(‘*’);

For(i=0;i<all.length;i++){

//對ALL[I]元素的某些操作;

}

b) Var all=document.body.getElementsByTagsName(‘*’);

For(i in all){

//對ALL[I]元素的某些操作;

}

這次迭代過程中,i值也會分別等於length/item/namedItem這導致代碼中出現意外的錯誤;而hasOwnProperty()避免這個問題;如果對象的屬性或方法是韭繼承的、那麼hasOwnProperty()返回true;如果在for循環中使用了這種檢查,那麼循環將會跳過length這樣的屬性;length不是數組all的直系屬性,而是派生數組all的NamedNodeMap對象的繼承的屬性;

c) Var all=document.body.getElementsByTagsName(‘*’);

For(i in all){

If(all.hasOwnProperty){continue;}

//對ALL[I]元素的某些操作;

}

八、函數的調用和引用(不帶括號)

a) Var foo=exampleFunction; 與var foo=exampleFunction();

尾處沒有圓括號,賦值給變量的是函數本身,而非結果。帶圓括號的不會得到的想要的結果;

 

待續!如有疑問,請提出你的見解,一起分享。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章