大家都想知道为什么以下代码导致NaN?
function multiply(num1,num2){
var total = num1 * num2;
return total;
}
var numbers = Array(10,2);
var results = multiply(numbers);
alert (results);
由于
答案 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.