1. ホーム
  2. javascript

[解決済み] Javascriptの関数でパラメータを渡さなかった場合はどうなりますか?

2022-11-05 01:42:42

質問

私はJavascriptの世界に入ったばかりで、非常に基本的な関数を書いているところですが、偶然にも以下の例に出会いました。

サンプル関数

function myfunction(x) {
    alert("This is a sample alert");
}

ここで、この関数を呼び出すと myfunction(); を呼び出すと、アラートが表示されます。パラメータを渡していないのに、エラーや警告を出さずに関数を呼び出すことができるのはなぜでしょうか。

EDIT

これほど多くの素晴らしい回答があるとは思っていませんでしたし、どの回答がベストであるかを言える立場にはありません。

どのように解決するのですか?

何も起こりません。つまり、javascriptでパラメータを渡すことは任意なので、エラーや警告が出ることはありません。

供給されなかったすべてのパラメータには undefined .

function foo(x, y, z){
    //...
}

foo(1);

の中は foo 関数の中で、今

function foo(x, y, z){
    x === 1
    y === undefined
    z === undefined
}

というように、さらに引数を渡すこともできます。

foo(1,2,3,4,5,7); // Valid!

で与えられたパラメータの量を知ることができます。 arguments.length によって提供されるパラメータの量を知ることができます。

function foo(x, y, z) {
    console.log('x value: ' + x);
    console.log('y value: ' + y);
    console.log('z value: ' + z);
    console.log('Arguments length: ' + arguments.length);
}
console.log('Zero parameters');
foo();
console.log('Four parameters');
foo(1, 2, 3, 4);

任意の数のパラメータを扱える便利な関数の例です。

function max() {
    var maxValue = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        if (maxValue < arguments[i]) {
            maxValue = arguments[i];
        }
    }
    return maxValue;
}

alert(max(1, 5, 7, 2, 88, 32, 44));