看了五花八門的文章,越解釋越模糊
其實閉包很簡單閉包:是指有權訪問另一個函數作用域中的變量的函數。
創建閉包的常用方式
//就是在一個函數內部創建另一個函數
//通常都是這種複雜的舉例
function createComparisonFunction(propertyName){
return function(object1, object2){
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
};
}
//在這個例子中,匿名函數function(object1, object2)是一個閉包,
能訪問createComparisonFunction作用域裏的所有變量
清晰的講:閉包就是一個函數,這個函數能夠訪問其他函數的作用域中的變量。
function outer(){
var a = 123;
var inner = function(){
cosole.log(a)
}
retrun inner
//inner就是一個閉包函數, 因爲它能夠訪問到outer函數的作用域
}