0

我正在编写下面的函数,我想到是否有另一种方法可以在循环中实例化计数器变量,而不是使用 var 关键字?此外,如果它可能在另一个上下文中而不是在 for 循环中。

显然这段代码不起作用。

function everyOther(arr) {
    var sum =0;
    for(i=0;i<arr.length;i+=2){
        sum+=arr[i];
    }
    return sum;
}

这个有效。我可以以某种方式省略 var 关键字吗?

function everyOther(arr) {
    var sum =0;
    for(var i=0;i<arr.length;i+=2){
        sum+=arr[i];
    }
    return sum;
}
4

3 回答 3

3

确实可以独立运行。只有它设置全局i变量,而不是使用本地变量 - 请参阅var 关键字的目的是什么以及何时使用它(或省略它)?.

但是,当您everyOther从另一个也使用全局i变量的代码段调用时,它们可能会干扰。特别是如果来自另一个循环,它可能会扰乱外部条件并导致无限循环。

于 2013-06-21T06:14:30.693 回答
0

您至少需要声明一个变量才能使用它。你也可以这样做:

function everyOther(arr) {
var sum =0;
var i = 0;
for(i=0;i<arr.length;i+=2){
    sum+=arr[i];
}
return sum;
}
于 2013-06-21T06:13:13.687 回答
0

因为你必须在使用它之前声明任何变量,如果你不使用它意味着你已经将它声明为一个全局变量。

使用var总是一个好主意,以防止变量混乱global scope和变量相互冲突,导致不必要的覆盖。

使用var意味着您将其指定为Local变量。
不指定var意味着您将其作为Global变量。

于 2013-06-21T06:19:00.990 回答