Javascript:在函数定义中使用全局变量

时间:2013-03-26 10:30:51

标签: javascript

我正在尝试执行以下代码:

for (var i = 0; i <= 9; ++i) {
    State.prototype["button" + i.toString()] = function () {
        console.log("I am a digit button" + i.toString());
        this.setValue(i.toString());
    };
}

但这是错误的,因为i变量对于所有创建的函数都是通用的。 例如,我希望函数State.prototype.button0()作为:

console.log("I am a digit button" + "0");
this.setValue("0");

怎么做?

1 个答案:

答案 0 :(得分:1)

将其传递给函数,以便i的值不会改变:

for (var i = 0; i <= 9; ++i) {
    (function(i){
        State.prototype["button" + i.toString()] = function () {
            console.log("I am a digit button" + i.toString());
            this.setValue(i.toString());
        };
    })(i);
}