web-dev-qa-db-ja.com

それらのパラメーターを提供せずに、パラメーターを取るJavascript関数を呼び出すとどうなりますか?

それらのパラメーターを提供せずにパラメーターを受け取るJavaScript関数を呼び出すとどうなりますか?

39
Krummelz

未定義に設定します。例外は発生しません。これは、特定の状況で関数をより汎用的にするための便利な方法です。 Undefinedはfalseと評価されるため、値が渡されたかどうかを確認できます。

38
KP.

javascriptは欠落しているパラメーターを値undefinedに設定します。

function fn(a) {
    console.log(a);
}

fn(1); // outputs 1 on the console
fn(); // outputs undefined on the console

これは、任意の数のパラメーターで機能します。

function example(a,b,c) {
    console.log(a);
    console.log(b);
    console.log(c);
}

example(1,2,3); //outputs 1 then 2 then 3 to the console
example(1,2); //outputs 1 then 2 then undefined to the console
example(1); //outputs 1 then undefined then undefined to the console
example(); //outputs undefined then undefined then undefined to the console

また、arguments配列には、関数定義で必要とされる以上の引数を指定した場合でも、指定されたすべての引数が含まれることに注意してください。

16
barkmadley

パラメータ付きのシグネチャにパラメータがないように見える関数を呼び出すことができるという点で、みんなの答えの逆です。

その後、組み込みのargumentsグローバルを使用してそれらにアクセスできます。これは、詳細を取得できる配列です。

例えば.

function calcAverage() 
{ 
   var sum = 0 
   for(var i=0; i<arguments.length; i++) 
      sum = sum + arguments[i] 
   var average = sum/arguments.length 
   return average 
} 
document.write("Average = " + calcAverage(400, 600, 83)) 
8
AutomatedTester

上記のコメントに加えて、arguments配列は長さがゼロです。関数のシグネチャで指定されたパラメータではなく、それを調べることができます。

3
Upperstage