美文网首页
闭包中的变量

闭包中的变量

作者: saronic | 来源:发表于2016-12-04 12:46 被阅读17次

先看一段代码

function out(){
    var arr = {};
    for(var i = 0; i < 3; i++) {
        arr[i] = function() {
            return i;
        }
    }
    return arr;
}

var f = out();
console.log(f[0]());

最终运行结果:3
arr是一个数组,里面的每个元素都是一个函数。f=out(),其实 f 等于 返回的 arr, f[0] 就等于 arr[0], 可以 console.log(f[0].toString()); 打印 f[0] 的定义。打印结果如下:

function () {
    return i;
}

执行 f0 的时候,return i,这个 i 应该是多少呢,这就是闭包引用函数外边的值,这里注意,闭包里的 i 里面保存的是外面 i 的一个引用(参考:David Herman 的《Effective JavaScript》第 11 条)。这是外面的 i 的值是多少呢? 因为 i 是 var 声明的,整个 function 内有效,每次 for 循环, i 都加 1, 所以最后结果是 3.

相关文章

  • javascript中闭包是什么

    javascript中闭包是什么 JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就...

  • 闭包与setTimeout

    闭包 闭包的作用: 闭包的本质是一个函数闭包可以访问函数内部变量闭包的存在会使内部变量保留在内存中闭包的应用: 模...

  • 「JS」闭包

    闭包闭包的应用保存变量现场封装 闭包 闭包有函数和与其相关的引用环境的组合而成 闭包允许函数访问其引用环境中的变量...

  • 第十五章 闭包

    匿名函数这里就不做介绍了 闭包 什么是闭包,可以把闭包理解为,一个函数可以访问另外一个函数中的变量。闭包中的变量会...

  • 闭包

    闭包概念 在计算机科学中,闭包, 又称词法闭包或函数闭包, 是引用了自由变量的函数。 这个被引用的自由变量将和这个...

  • Python闭包

    闭包 = 环境变量 + 函数 调用闭包内部的环境变量 闭包的经典误区 闭包与非闭包实现人类走路 非闭包 闭包

  • 一篇就够-从底层理解闭包

    闭包 理论中的闭包 闭包是指那些能够访问自由变量的函数 自由变量: 自由变量是指在函数中使用的,但既不是函数参数,...

  • 闭包和立即执行函数

    闭包闭包:内部的函数引用了外部的函数的变量,则产生闭包。闭包的作用:把变量封装在函数中,只有内部函数可以用,让函数...

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • js闭包、定时器基础知识问答

    一、问题 (一)、什么是闭包? 有什么作用 闭包是指能够访问自由变量的函数 (变量在本地使用,但在闭包中定义)。换...

网友评论

      本文标题:闭包中的变量

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