重慶達內IT培訓
美國上市IT培訓機構

15023458194

重慶web培訓:Js函數閉包的理解及閉包存在一些問題的解決

  • 時間:2021-03-18 11:41
  • 發布:重慶達內
  • 來源:重慶達內

函數閉包

函數就是閉包,當一個函數被創建時,它的內部的語句、變量、函數等,共同形成了閉包。

重慶web培訓:Js函數閉包的理解及閉包存在一些問題的解決

這里簡單分析下閉包函數執行調用過程

function outer(){

var a = 12;

//形成閉包環境中的變量不是一成不變的,可以被更改

function inner(){

console.log(a ++);

}

return inner;

}

var inn = outer();

inn();

inn();

重慶web培訓:Js函數閉包的理解及閉包存在一些問題的解決

閉包的用途:

可以在函數外部讀取函數內部成員

讓函數內成員始終存活在內存中

閉包存在的問題

//閉包的問題

var arr = [];

for(var i = 0;i <= 10;i ++){

arr[i] = function (){

console.log(i);

}

}

//應該是輸出對應下標

arr[0]();//11

arr[1]();//11

arr[2]();//11

這個代碼只是想實現根據arr下標,console.log出相應的值。但是當調用時,for循環中的i已經執行完了,i = 11。i的作用域太大了,執行時,i的結果就已經執行完了。

解決方法就是形成一個閉包,將i的作用域從全局縮小變成局部作用域,arr[i]()每執行一次,i的值就執行一次,使i的值依舊可以使用。

//解決

var arr = [];

for (var i = 0; i <= 10; i++) {

//自調用函數

(function (i){

arr[i] = function () {

console.log(i);

}

})(i);

}

//應該是輸出對應下標

arr[0]();//0

arr[1]();//1

arr[2]();//2

上一篇:重慶web前端培訓機構:正則表達式
下一篇:重慶web培訓班:cript如何將漢字字符轉換成Unicode編碼?

重慶WEB前端培訓班:箭頭函數的副作用

重慶web前端培訓機構:jQuery中的入口函數

重慶web前端培訓:圖像樣式

重慶web前端培訓班:圖片裁切

  • 關注微信公眾號

    回復關鍵字:視頻資料

    免費領取 達內課程視頻學習資料

  • 視頻學習QQ群

    添加QQ群:1143617948

    免費領取達內課程視頻學習資料

Copyright ? 2018 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

選擇城市和中心
江西省

貴州省

廣西省

海南省

免费V片无码动漫在线观看网址-男人的天堂无码动漫av