【问题标题】:I am facing hard time understanding this piece of JS code [duplicate]我很难理解这段 JS 代码 [重复]
【发布时间】:2015-06-22 04:21:15
【问题描述】:
var myAlerts = [];    

for (var i = 0; i < 5; i++) {    
    myAlerts.push(    
        function inner() {    
            alert(i);    
        }    
    );    
}    

myAlerts[0](); // 5    
myAlerts[1](); // 5    
myAlerts[2](); // 5   
myAlerts[3](); // 5   
myAlerts[4](); // 5 

为什么数组中位置 0-4 的所有值都是“5”。我发现一些关于此的文章,因为 Javascript 支持词法范围而不是动态。是的,我明白了。但是有什么办法可以理解上面sn-p的这个核心概念 谢谢

【问题讨论】:

  • 所有函数都引用i,其值为5在它们执行时

标签: javascript function scope hoisting


【解决方案1】:

在此特定功能中,值i 是动态的,每当您更改 i 的值时,它将被新值替换。

i 被认为是参考价值。

因此,如果您将其更改为 for 循环直到 10,您将所有 i 都替换为 10。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2018-03-06
    • 2021-04-03
    • 2019-02-13
    • 1970-01-01
    • 2020-03-27
    相关资源
    最近更新 更多