4 回答

TA貢獻(xiàn)27條經(jīng)驗(yàn) 獲得超9個(gè)贊
先說(shuō)兩個(gè)概念:
匿名函數(shù):就像是變量賦值語(yǔ)句;像 var functionName=function(){ };這種就是匿名函數(shù)。
閉包:指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量和函數(shù)。
一般來(lái)說(shuō)常見(jiàn)的這種,在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)就是一個(gè)閉包。
function?functionName1(){ ????var?example="something"; ????function?functionName2(){ ????????//函數(shù)體 ????}; };
functionName2里面的函數(shù)體有權(quán)訪問(wèn)到它不包含的變量example;此變量在另一個(gè)函數(shù)中,所以functionName2就是一個(gè)閉包。

TA貢獻(xiàn)19條經(jīng)驗(yàn) 獲得超5個(gè)贊
?(function(){ ????????var?arr=[]; ????????(function(){ ????????????console.log(j);//undefined ????????})(); ????????var?j=2; ????????function?go(){ ????????????console.log(j);//2 ????????} ????????for(var?i=0;i<5;i++){ ????????????arr[i]=function(){ ????????????????console.log(i); ????????????} ????????} ????????return?arr[0]();//5 ????})();
高級(jí)程序設(shè)計(jì)相關(guān)部分反復(fù)看。

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超2個(gè)贊
閉包
閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù)。創(chuàng)建閉包的常見(jiàn)方式就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)。
function outer() {
? ?var localVal = 30;
? ?return function() {
? ?//在函數(shù)內(nèi)創(chuàng)建一個(gè)匿名函數(shù),這個(gè)函數(shù)可以通過(guò)作用域鏈可以訪問(wèn)外部的變量
? ? ? ?return localVal;
? ?}
}
var func = outer();
console.log(localVal);// localVal is not defined(…)
//外部無(wú)法訪問(wèn)函數(shù)內(nèi)的變量。
func();//30
之前記的筆記,你可以參考一下
添加回答
舉報(bào)