0

大家好,只是想知道为什么下面的代码会导致 NaN?

function multiply(num1,num2){
    var total = num1 * num2;
    return total;
}

var numbers = Array(10,2);
var results = multiply(numbers);
alert (results);

谢谢

4

4 回答 4

6

用于.apply调用函数。

var results = multiply.apply(null, numbers);

.apply方法调用该multiply函数,但接受一个数组或类似数组的集合作为第二个参数,并将集合的成员作为单独的参数发送。

仅供参考,.apply设置调用上下文的第一个参数。我通过了null,因为您的函数没有使用this.

如果您决定让multiply函数采用可变数量的参数,则此技术特别有用。使用.apply,数组中有多少并不重要。他们将作为个人通过。

于 2012-09-11T22:17:21.183 回答
5

您只将一个参数传递给multiply. 函数内部num1是一个数组,num2未定义。

你想做的是这个

var result = multiply(numbers[0], numbers[1]);
于 2012-09-11T22:14:49.937 回答
1

您将一个数组传递给 multiply 需要 2 个数字。

当您尝试将数组相乘时,结果是 NaN 是有道理的,它代表 Not a number。

尝试:

var results = multiply(numbers[0], numbers[1]);
于 2012-09-11T22:16:20.060 回答
0

调用数组值时,必须在数组中定义值。

例如:

var numbers = Array(10, 2)

JavaScript 从 0 开始数组计数,因此numbers[0]等于 10 并且numbers[1]等于 2。

于 2012-09-11T22:18:12.177 回答