JavaScript - 匿名函數和閉包
阿新 • • 發佈:2017-09-19
讀取 javascrip cnblogs () 避免 發的 立即執行 使用 內部
1. 塊級作用域
/* 這裏是全局環境 */ //立即執行函數 (function () { //這裏是塊級作用域,外部無法讀取function內部的變量,除非將變量賦給window var a = ‘hello‘; var b = ‘world‘; alert(a); //可以打印a window.b = b; //將b賦給全局 })(); alert(a); //無法打印a alert(b); //可以打印b
我們一般在寫插件的時候,將代碼封裝在一個立即執行函數裏,一般只將一個對象賦給全局供外部使用,這樣就避免了插件內部變量汙染全局變量。
在多人協作開發的項目中要盡可能少的使用全局變量和函數,否則很可能導致命名沖突。而將各自的代碼封裝在各自的作用域中,則互不幹擾。
//程序員A的代碼 (function () { $(function () { var a = ‘hello‘; alert(a); }); })(); //程序員B的代碼 (function () { $(function () { var a = ‘world‘; alert(a); }); })(); //都得以執行
在全局作用域中使用塊級作用域可以減少閉包占用的內存問題,因為沒有指向匿名函數的引用。只要函數執行完畢,就可以立即銷毀其作用域鏈了。
JavaScript - 匿名函數和閉包