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、2番目の引数として配列または配列のようなコレクションを受け入れ、コレクションのメンバーを個別の引数として送信します。

.apply参考までに、呼び出しコンテキストを設定する最初の引数。nullあなたの関数はを使用しないので、私は合格しthisました。

この手法は、multiply関数に可変数の引数をとらせることにした場合に特に役立ちます。を使用.applyすると、配列にいくつあるかは関係ありません。それらは個人として渡されます。

于 2012-09-11T22:17:21.183 に答える
5

に渡す引数は1つだけですmultiply。関数内にnum1は配列があり、num2未定義です。

あなたがしたいのはこれです、

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

multiplyが2つの数値を期待する場合、配列をmultiplyに渡します。

配列を乗算しようとすると、結果が「数値ではない」を表すNaNであることがわかります。

試す:

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

配列値を呼び出すときは、配列に値を定義する必要があります。

例えば:

var numbers = Array(10, 2)

JavaScriptは配列カウントを0から開始するため、numbers[0]10numbers[1]に等しく、2に等しくなります。

于 2012-09-11T22:18:12.177 に答える