javascript的閉包

1,全局變量和局部變量問題:注意函數內部定義的var是局部變量,函數外部定義的var或者未使用var又或者函數體內用非var也是全局變量,以供全局使用。web

 

2,閉包突破全局做用於鏈:閉包是可訪問上一層函數做用域裏變量的函數,即使上一層函數已經關閉。(其實就是函數內部的子函數,它來訪問函數內部的變量)閉包

var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
})();

add();
add();
add(); 


變量 add 指定了函數自我調用的返回字值。
自我調用函數只執行一次。設置計數器爲 0。並返回函數表達式。
add變量能夠做爲一個函數使用。很是棒的部分是它能夠訪問函數上一層做用域的計數器。
這個叫做 JavaScript 閉包。它使得函數擁有私有變量變成可能。
計數器受匿名函數的做用域保護,只能經過 add 方法修改。
相關文章
相關標籤/搜索