JavaScript 関数のパラメーター
JavaScript 関数は、パラメーターの値のチェックを実行しません。
関数の明示的なパラメーター (パラメーター) と暗黙的なパラメーター (引数)
前のチュートリアルでは、関数の明示的なパラメーターについて学習しました:
functionName(parameter1,parameter2,parameter3) {
// code for...
}
関数の定義時に明示的な関数パラメーターがリストされます。
暗黙的な関数パラメーターは、関数が呼び出されたときに関数に渡される実際の値です。
パラメータのルール
JavaScript 関数が定義されている場合、表示パラメータはデータ型を指定しません。
JavaScript 関数は、暗黙的なパラメーターの型チェックを実行しません。
JavaScript 関数は暗黙的なパラメーターの数を検出しません。
デフォルトパラメータ
暗黙的なパラメータを指定せずに関数が呼び出された場合、パラメータはデフォルトで未定義に設定されます
これが許容される場合もありますが、パラメータのデフォルト値を設定することをお勧めします:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>设置参数的默认值。</p> <p id="demo"></p> <script> function myFunction(x, y) { if (y === undefined) { y = 0; } return x * y; } document.getElementById("demo").innerHTML = myFunction(4); </script> </body> </html>
If y は既に定義されており、y || は y が true であるため y を返し、それ以外の場合は unknown が false であるため 0 を返します。
関数呼び出し時にパラメータを設定しすぎると、対応するパラメータ名が見つからないため、パラメータは参照されません。 引数オブジェクトを使用してのみ呼び出すことができます。
Arguments オブジェクト
JavaScript 関数には、組み込みのオブジェクト引数オブジェクトがあります。
argument オブジェクトには、関数呼び出しのパラメータ配列が含まれます。
この方法で、最後のパラメータの値を簡単に見つけることができます:
ソースコード:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>查找最大的数。</p> <p id="demo"></p> <script> function findMax() { var i, max = 0; for(i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; } document.getElementById("demo").innerHTML = findMax(4, 5, 6); </script> </body> </html>
または、すべての値の合計をカウントする関数を作成します:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>计算所有参数之和:</p> <p id="demo"></p> <script> function sumAll() { var i, sum = 0; for(i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88); </script> </body> </html>
パラメータを値で渡します
関数内で呼び出されるパラメータは、関数の暗黙的なパラメータです。
JavaScript の暗黙的なパラメーターは値によって渡されます。関数は値を取得するだけです。
関数がパラメーターの値を変更する場合、明示的なパラメーター (関数の外部で定義される) の初期値は変更されません。
暗黙的なパラメーターの変更は関数の外部には表示されません。
オブジェクトを介してパラメーターを渡す
JavaScript では、オブジェクトの値を参照できます。
そのため、関数内でオブジェクトのプロパティを変更すると、その初期値も変更されます。
オブジェクトのプロパティの変更は、関数 (グローバル変数) の外部で動作する可能性があります。
オブジェクトのプロパティの変更は関数の外部で確認できます。