こんにちは、次のコードがなぜNaNになるのか疑問に思っていますか?
function multiply(num1,num2){
var total = num1 * num2;
return total;
}
var numbers = Array(10,2);
var results = multiply(numbers);
alert (results);
ありがとう
こんにちは、次のコードがなぜNaNになるのか疑問に思っていますか?
function multiply(num1,num2){
var total = num1 * num2;
return total;
}
var numbers = Array(10,2);
var results = multiply(numbers);
alert (results);
ありがとう
.apply
関数を呼び出すために使用します。
var results = multiply.apply(null, numbers);
この.apply
メソッドは関数を呼び出しますがmultiply
、2番目の引数として配列または配列のようなコレクションを受け入れ、コレクションのメンバーを個別の引数として送信します。
.apply
参考までに、呼び出しコンテキストを設定する最初の引数。null
あなたの関数はを使用しないので、私は合格しthis
ました。
この手法は、multiply
関数に可変数の引数をとらせることにした場合に特に役立ちます。を使用.apply
すると、配列にいくつあるかは関係ありません。それらは個人として渡されます。
に渡す引数は1つだけですmultiply
。関数内にnum1
は配列があり、num2
未定義です。
あなたがしたいのはこれです、
var result = multiply(numbers[0], numbers[1]);
multiplyが2つの数値を期待する場合、配列をmultiplyに渡します。
配列を乗算しようとすると、結果が「数値ではない」を表すNaNであることがわかります。
試す:
var results = multiply(numbers[0], numbers[1]);
配列値を呼び出すときは、配列に値を定義する必要があります。
例えば:
var numbers = Array(10, 2)
JavaScriptは配列カウントを0から開始するため、numbers[0]
10numbers[1]
に等しく、2に等しくなります。