美文网首页
JavaScript闭包无处不在

JavaScript闭包无处不在

作者: Ronswhite | 来源:发表于2019-06-10 17:21 被阅读0次

    闭包是函数的特性

    每个函数都可以记住并访问所在的作用域,当函数在当前作用域之外调用时,就会产生闭包。
    可以简单的认为,一个函数的作用域链就是一个闭包。

    var foo = (function bar(i) {
        function inner() {
            console.log(i);
        }
        return inner;
    })(10);
    foo();
    

    由于inner函数记住了bar函数作用域及自己内部的作用域。所以执行inner(也就是foo),就会产生闭包。

    利用闭包劫持变量

    for(var i = 0; i < 5; i++) {
        (function(i){
            setTimeout(function timer() {
                console.log(i);
            }, i * 500);
        }(i));
    }
    

    执行上面代码,每次循环timer函数都会记住不同的环境(IIFE函数作用域),也就产生了不同的闭包,每个闭包中都劫持了一份i值得副本,分别为0~4。

    相关文章

      网友评论

          本文标题:JavaScript闭包无处不在

          本文链接:https://www.haomeiwen.com/subject/qenzxctx.html