关闭时javascript'this'关键字的行为

时间:2018-04-16 18:08:45

标签: javascript closures

考虑一个简单的模式,我们在循环中调用setTimeout来打印循环计数器:

function g(i){
    return function()
    {
        console.log(i);
    }
}

for(i=0;i<4;i++)
{
    setTimeout(g(i),3000);
}

返回预期结果:

0
1
2
3

根据我的理解,这个功能应该做同样的事情

function f(i){
    this.n = i;
    return function()
    {
        console.log(this.n);
    }
}

for(i=0;i<4;i++)
{
    setTimeout(f(i),3000);
}

相反,我在NodeJS中获得了不同的结果:

undefined
undefined
undefined
undefined

在Google Chrome中:

3
3
3
3

这些结果都没有对我有意义,所以我希望别人可以向我解释这个。

1 个答案:

答案 0 :(得分:0)

您可以使用箭头功能来保持这一点:

radioButton.isSelected = true