3

如果我有 2 个for循环都声明var i,那么第二个循环会产生警告:

public function twoLoops(){
    for (var i:int = 0; i < 100; i++) {
    }

    for (var i:int = 0; i < 100; i++) { // i is already declared once
    }
}

我理解发生这种情况的原因,在这个答案中有解释,但是有没有办法解决它(除了i在方法的开头声明)?

4

2 回答 2

3

这很简单——只是不要在第二个循环中声明它:

public function twoLoops(){
    for (var i:int = 0; i < 100; i++) {
    }

    for (i = 0; i < 100; i++) { // i is already declared once
    }
}

这将没有错误 - 正如您的警告告诉您的那样,它已经定义,因此您可以再次使用它,将其设置回 0 以允许循环正确执行。

于 2013-02-04T00:15:30.417 回答
1

如果您坚持按照自己的方式使用循环,请考虑将其包装在一个函数中:

public  function twoLoops() {
    for (var  i:int = 0; i < 10; i++) {
    }

    (function(){ 
        for (var i:int = 0; i < 100; i++) { // i is already declared once       
        } 
    })();
}

尽管它不会发出任何警告,但我想知道它真正为您解决了什么目的。

于 2013-02-03T19:23:18.863 回答