gpt4 book ai didi

JavaScript 循环返回意外结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:27 25 4
gpt4 key购买 nike

谁能告诉我为什么这会记录 11 而不是 9

function foo() {
function bar(a) {
i =3;
console.log( a + i );
}

for (var i=0; i<10; i++) {
bar( i *2 );
//I know, infinite loop
}
}

foo();

如果 i 硬编码在 bar(){} 中,记录的结果不应该是 9 吗?

这是 Scope 类的一部分,我迷路了。

谢谢。

最佳答案

在第一次迭代中,i0,小于100 (2 * i) 作为 a 传递给 bari 设置为 3,则总和为 3

在下一次迭代中,i递增到4(仍然小于10),然后是8 (2 * i) 作为 a 传递给 bari 重置为 3,则总和为 11

下一次迭代是相同的,i 再次从 3 递增到 4,依此类推。

你的误解似乎是 a 的值不会改变,因为 i 被改变了,乘法首先计算。或者您只是错过了循环头中的 i++ 语句。

关于JavaScript 循环返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37862743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com