都是学JavaScript中自己的一些理解,有误的地方欢迎指正。
先上代码:
var outer = function(){
var aa = "hello javaScript";
return function inner(){
console.log( aa );
}
}
var third = outer();//把outer()运行完的返回值赋值给third,这里是inner函数
third();//运行inner函数
由于js中的作用域设定,作用域外不能访问作用域内的变量,闭包能够让作用域(函数就是一个作用域)外能访问到作用域内部的变量。
代码从上往下执行先是var了一个outer的变量赋值为一个函数,然后var了一个叫third的变量赋值是outer()表示执行outer函数。
开始执行outer函数var了一个叫aa的变量,给aa变量赋值为“helloJavaScript”然后return,return后面没有值的话就是结束函数有值的话这个值就是这个函数的返回值,什么类型的都可以。
这里返回的是一个叫inner的函数,那么third变量的值就是inner函数,下面third(),表示执行third变量也就是inner函数,执行的结果就是inner函数里面的console.log(aa),那么就会在控制台输出“hello JavaScript”。
就达到了了作用域外访问作用域内变量的效果。
网友评论