gpt4 book ai didi

javascript - javascript 中变量范围的问题

转载 作者:行者123 更新时间:2023-12-02 19:26:28 24 4
gpt4 key购买 nike

Possible Duplicate:
Javascript closure inside loops - simple practical example

我似乎很难理解 JavaScript 中变量的范围。

我有以下代码:

for (var i =2; i< 5;i++){
var k = (i+1).toString()
window['graph.point'+i].onMove = function(x,y){
return [min(x,window['graph.point'+k].coord[0]],f(min(x,window['graph.point'+k].coord[0]))]}
}
}

这段代码应该对图表上一些可移动点的可能位置施加一些限制。问题似乎是,当 graph.point 对象检查是否满足约束时,它们使用 k 的最后一个值,即 6。我如何确保这些对象使用它们应该使用的 k 值?

最佳答案

for block 没有自己的变量作用域,因此您需要使用立即函数创建一个新作用域:

for (var i =2; i< 5;i++){
var k = (i+1).toString();
(function(k, i) {
window['graph.point'+i].onMove = function(x,y){
return [min(x,window['graph.point'+k].coord[0]],f(min(x,window['graph.point'+k].coord[0]))]}
}
})(k, i);
}

关于javascript - javascript 中变量范围的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999001/

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