闭包
例:
sum是函数作用域里面的变量,也称局部变量,外面没有办法直接访问这个局部变量,除非把sum最为返回值返回出去,外面才可以访问sum。
function add(){
var sum = 0;
for ( var i = 0 ;i<arguments.length;i++){
sum = sum + arguments[i];
}
return sum;
}
既然是在函数中,可以把一个变量返回出去,那么自然也可以把一个函数返回出去。(3)
这个例子就是在函数里嵌套了另外一个函数(1),把一个函数返回出去。
function test(){
return function(){
}
}
函数作用域可嵌套,所以里面的函数作用域可以访问外面函数作用域中的变量。
function test(){
var a = 0;
return function(){
console.log(a);
}
}
test里定义了一个局部变量a,变量a属于test函数的函数作用域,最后返回的函数也属于test函数作用域,这个function(匿名函数)内部就有权限访问外部作用域。(2)
也就是说,变量a可以被function访问到。因为test函数返回的结果是一个函数,函数不去调用就不会执行里面的代码,所以如果需要执行内部函数的函数体,就必须要&#x