JavaScript基础概念之----闭包

闭包 是由作用域链引起的。

var parent = function(){
    var a = 'hello';
    return function(){
        console.log(a);
    }
}

var my = parent();
my();//输出'hello',因为返回的函数可以通过作用域链访问a

如上代码:

定义parent函数,返回一个匿名函数,并从全局作用域调用这个返回的匿名函数。

因为匿名函数被定义在parent函数内部,因此,它被调用后仍然能够访问parent函数的作用域。这就是闭包。

//另一个例子
var myfunc = function(arg){
    return {
        myMethod:function(){
            return arg;
        }
    }
}

var my = myfunc('hello')
my.myMethod(); //返回 hello

猜你喜欢

转载自www.cnblogs.com/adhehe/p/9785022.html