gpt4 book ai didi

javascript - 基础 - 变量引用

转载 作者:行者123 更新时间:2023-11-30 10:30:38 25 4
gpt4 key购买 nike

如果我的术语在这个问题上有误,我们深表歉意。

采取以下功能:

i = 1;
v = i * 2;

for (j = 0; j < 4; j++ ) {
console.log(v);
i++;
}

控制台将返回 2、2、2、2。当我遇到这个时,我将变量“v”移到 for 循环中,它返回预期值 2、4、6、8。我对这种方式的理解变量在基本层面起作用的说法显然是错误的。

我的逻辑告诉我,变量 v 的值与变量 i 的值永久相关。因此,每次引用 v 时,也必须引用 i 的值。由于 i 会在数值上增加,因此 v 应该与此成比例增加。相反,它似乎存储了 v 的结果值,而不是最初计算该值的实际表达式。

这是一个第一性原理问题,虽然我设法找到了问题的解决方案,但我不明白为什么这个解决方案有效。

最佳答案

第一种方式

i = 1;
// v is equal to the result of "i * 2" (2) and will stay that way
// until it (v) is set to another value (which never happens)
v = i * 2;

for (j = 0; j < 4; j++ ) {
console.log(v);
i++;
}

第二种方式

i = 1;

for (j = 0; j < 4; j++ ) {
// v is equal to i*2, we are setting v each iteration. in each iteration, i is
// changed. so the value of v will be different
v = i * 2;
console.log(v);
i++;
}

如果出于某种原因你不想在循环中每次显式设置 v,你可以创建一个函数:

i = 1;
v = function(){ return i * 2 };

for (j = 0; j < 4; j++ ) {
console.log(v());
i++;
}

关于javascript - 基础 - 变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133685/

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