理解delete

參考文章:http://perfectionkills.com/understanding-delete/
譯文:http://www.denisdeng.com/?p=858

總結以下:

1.在全局環境下,宣告的變量名稱和函數名稱會變成全局對象(即window對象)成員

2.所有宣告的變量名稱和函數名稱都不可delete(但可覆蓋)

3.沒有宣告的變量名稱是可以delete

4.在IE(8), window對象(還有document和其他對象),成員是可加入但不可delete.

var a=1;
b
=1; // Error in FF strict mode
window.c=1;

delete window.a; // Not work in FF; Error in IE
delete window.b; // Error in IE
delete a; // Not work in FF, Error in strict mode; Error in IE
delete b; // OK
delete window.c; // OK in FF; Error in IE

實際寫代碼時要注意的地方: 不要宣告不常用的變量和函數,因為它們會長留在window對象下

function init(){...........}
...........
onload
=init;
//這會製造多一個沒用的window.init成員


//
onload=function(){................}



//這httpR只用一次,不應用var httpR; 應 (FF下):
window.httpR = new XMLHttpRequest();
httpR.onreadystatechange
= function(){
...........
httpR.onreadystatechange
=null;
delete window.httpR;
};
..............
posted @ 2011-09-18 15:19  simonleung  阅读(296)  评论(2)    收藏  举报