javascript中閉包最簡單的簡紹
阿新 • • 發佈:2018-10-29
覆蓋 計數 在一起 com 想要 .com neu 內部 文章
javascript中閉包是什麽
JavaScript 變量可以是局部變量或全局變量。私有變量可以用到閉包。閉包就是將函數內部和函數外部連接起來的一座橋梁。 函數的閉包使用場景:比如我們想要一個函數來執行計數功能。 如果設計全局變量 1 var counter=0; 2 function add(){ 3 4 return counter++;} // add(); 在瀏覽器調用 add();//值為2 問題是如何當我們設計另外一個方法時用到需要counter這個變量,我們在進行修改無疑會改變counter的初始值如下<script>
var counter=0;
function add(){
return counter++;}
function plus(){ return counter=5; } plus();
</script>我們此時在調用add() 值就是6 所以設置counter變量為全局變量的時候我們調用函數會得到不想要的值; 思考?如果使用局部變量
function add(){ var counter=0; return counter++ ; }所以我們需要函數外部可以讀取函數變量內部的值,下面就對函數進行了私有化 在 JavaScript 中,所有函數都能訪問它們上一層的作用域 JavaScript 支持嵌套函數。嵌套函數可以訪問上一層的函數變量。 該實例中,內嵌函數 plus() 可以訪問父函數的 counter 變量
調用add()結果永遠是0,函數運行到 counter=0;就覆蓋變量;
function add() { var counter=0 ; function plus (){ counter++; } plus(); return counter; }
閉包的寫法 函數的立即執行()() 及函數的聲明和函數的執行放在一起 這就是閉包的最終格式
var plus=(function add() { var counter=0;//定義為局部變量 return function(){ counter++;// console.log("counter"+counter); } })()
調用plus() ;
閉包就是將函數內部和函數外部連接起來的一座橋梁。
這篇文章https://www.cnblogs.com/lsc-boke/p/6513278.html寫了閉包對內存的影響javascript中閉包最簡單的簡紹