了解功能范围

时间:2016-09-05 22:08:15

标签: javascript

我有JavaScript代码。

var a = [];

for (var i = 0; i < 5; i++) {
    a[i] = function () {
        alert(i);
    };
}

a[2]();

如果我调用a[2](),我希望看到包含2的邮件,但我会看到5

要修复它我可以像这样重写它:

for (var i = 0; i < 5; i++) {
    (function (v) {
        a[i] = function () {
            alert(v);
        }
    })(i)
}

但我无法理解它是如何运作的。那么为什么我需要将我的函数代码封装起来呢?

0 个答案:

没有答案