局部变量是未定义的,虽然我在javascript中为它赋值

时间:2015-11-03 03:53:09

标签: javascript arrays function

我对编程并不陌生,所以我很困惑为什么在为一个用var关键字声明的变量赋值之后,当我调用该函数时我得到一个引用错误sum是“未定义” 。这没有意义。我用var声明了sum并为它赋值0.我正在创建一个返回数组中零的数量的函数。这是我正在为我的家庭作业工作的代码片段。请给我任何建议。

numZero = function (a) {
    var sum = a[0];
    for (var i = 1; i < a.length; i += 1) {
        if (sum < 1) {
            sum += a[i];
        }
    }
    return sum;
};

alert(numZero([2, 8, 0, 0, 1, 4, 0, 1]));

3 个答案:

答案 0 :(得分:1)

numZero = function (a) {
var sum = 0;
for (var i = 1; i < a.length; i += 1) {
    if (a[i] == 0) {
        sum++;
    }
}
return sum;
};

alert(numZero([2, 8, 0, 0, 1, 4, 0, 1]));

答案 1 :(得分:0)

首先,此函数不返回数组中的零值。可能的总和是未定义的,因为你传递一个空数组作为参数。 我只是注意到你在numZero函数定义中缺少car关键字

答案 2 :(得分:0)

此代码运行时没有错误,但它不返回数组中的0的数量。这样做的原因是您将sum设置为数组中第一个元素的值:var sum = a[0]

然后,在for循环中检查sum是否小于1,在这种情况下它永远不会因为2总是大于1,所以if语句中的代码永远不会运行。

最后,即使它确实运行,每次找到零时,它都会向sum添加0,因为你正在执行sum += a[i]如果此代码运行a[i]应为零

我修复了你的代码以便正常运行:

var numZero = function (a) {
    var sum = 0;
    for (var i = 0; i < a.length; i += 1) {
        if (a[i] === 0) {
            sum += 1;
        }
    }
    return sum;
};