繁体   English   中英

javascript中的变量范围问题[重复]

[英]Issue with scope of variables in javascript [duplicate]

可能重复:
循环内部的Javascript闭包 - 简单实用的例子

我似乎在努力理解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块没有自己的变量范围,因此您需要创建一个具有立即函数的新范围:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM