gpt4 book ai didi

javascript - 这是否适合我的循环?

转载 作者:行者123 更新时间:2023-12-03 00:29:02 24 4
gpt4 key购买 nike

我写了一个简单的javascript代码。我的 for 循环迭代一个“let”声明的变量,i 介于 0 和 2 之间。仅当 i == 2 时,才会在循环中声明函数。该函数必须返回 i 变量的值。当我从循环外部调用此函数时,该函数返回 i = 2 的值(这对于 block 作用域变量 i 来说是很自然的。但是,当我将循环代码重写为其非循环等效代码块时,该函数(仍然从 block 外部调用)返回 i = 3 的值。发生了什么?

"use strict";
var printNumTwo;

for (let i = 0; i < 3; i++) {
if (i === 2) {
printNumTwo = function() {
return i;
};
}
}
console.log(printNumTwo()); //returns 2

// loop equivalent
{
let i = 0;
i = 1;
i = 2;
printNumTwo = function() {
return i;
}
i = 3;
}
console.log(printNumTwo()); // returns 3

最佳答案

你的例子很糟糕,因为你的循环在2之后不计数。所以如果你的循环看起来像 i <= 3 :

for (let i = 0; i <= 3; i++) {
if (i === 2) {
printNumTwo = function() {
return i;
};
}
}

您将得到与非循环示例完全相同的结果,这是因为 javascript 中的闭包,但 return中断 for 循环。您的函数正在从外部范围保存对该变量的引用。

关于javascript - 这是否适合我的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53958178/

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