javascript数值数组

时间:2012-09-11 22:13:39

标签: javascript

大家都想知道为什么以下代码导致NaN?

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

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

由于

4 个答案:

答案 0 :(得分:6)

使用.apply来调用该函数。

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

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

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

如果您决定让multiply函数采用可变数量的参数,则此技术特别有用。使用.apply,数组中的数量无关紧要。他们将作为个人传递。

答案 1 :(得分:5)

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

你想要做的就是这个,

var result = multiply(numbers[0], numbers[1]);

答案 2 :(得分:1)

你正在将一个数组传递给multiply,其中multiply需要2个数字。

当你尝试乘以一个数组时,结果是NaN代表非数字是有意义的。

尝试:

var results = multiply(numbers[0], numbers[1]);

答案 3 :(得分:0)

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

例如:

var numbers = Array(10, 2)

JavaScript将数组计数设为0,因此numbers[0]将等于10,numbers[1]将等于2.