闭包

来源:互联网 发布:linux备份系统 编辑:程序博客网 时间:2024/05/21 14:43
javaScript是没有块级作用域,每一个函数就是一个作用域,函数里定义的变量,外面是访问不到的!
var fun = function() {
    var i = 0;
    console.log(i); //0
}
fun();
console.log(i); //Uncaught ReferenceError


要是想访问一个函数里面定义的变量可以通过闭包来访问,在一个函数(外函数)里面定义一个函数(内涵数),内函数有权访问外函数的变量。
function a() {
    var a = 0;
    function b() {
        console.dir(a);
    }
    b()
}
a();  //控制台输入0
通常这样做没有多大意义,我们可以将里面定义的函数返回回来。
function a() {
    var a = 0;
    function b() {
        console.dir(a);
    }
    return b;
}
var f = a();
f(); //输出还是0
原理:当一个函数被执行的时候,会创建它的执行环境和作用域链。
0 0
原创粉丝点击