JavaScript 関数パラメータ
JavaScript 関数はパラメータの値に対して何のチェックも行いません。
関数の明示的パラメータ(Parameters)と暗黙的パラメータ(Arguments)
前のチュートリアルでは、関数の明示的パラメータについて学びました:
関数の明示的パラメータは関数定義時に列挙されます。
関数の暗黙的パラメータは関数呼び出し時に関数に実際の値を渡します。
パラメータのルール
JavaScript 関数は明示的パラメータを定義する際にデータ型を指定しません。
JavaScript 関数は暗黙的パラメータに対して型チェックを行いません。
JavaScript 関数は暗黙的パラメータの個数チェックを行いません。
デフォルトパラメータ
ES5 では、関数呼び出し時に暗黙的パラメータが提供されない場合、パラメータはデフォルトで次のように設定されます:undefined
これで問題ない場合もありますが、パラメータにデフォルト値を設定することをお勧めします:
または、より簡単な方法:
![]() |
y がすでに定義されている場合、y || 0y を返します。y は true だからです。それ以外の場合は 0 を返します。undefined は false だからです。 |
|---|
関数呼び出し時にパラメータが多すぎる場合、対応するパラメータ名が見つからないため、パラメータを参照できません。arguments オブジェクトを使用してのみアクセスできます。
ES6 関数はデフォルトパラメータを持てる
ES6 は関数がデフォルトパラメータを持つことをサポートしており、undefined と || の判定操作を行います:
例(ES6)
試してみる »
arguments オブジェクト
JavaScript 関数には、組み込みのオブジェクトである arguments オブジェクトがあります。
arguments オブジェクトには、関数呼び出しのパラメータ配列が含まれています。
この方法を使うと、最大のパラメータの値を簡単に見つけることができます:
例
試してみる »
または、すべての数値の合計を計算する関数を作成します:
例
試してみる »
値によるパラメータの受け渡し
関数内で呼び出されるパラメータは関数の暗黙的パラメータです。
JavaScript の暗黙的パラメータは値によって渡されます。関数は単に値を受け取るだけです。
関数がパラメータの値を変更しても、明示的パラメータの初期値(関数外で定義された値)は変更されません。
暗黙的パラメータの変更は関数外では見えません。
オブジェクトによるパラメータの受け渡し
JavaScript では、オブジェクトの値を参照できます。
したがって、関数内でオブジェクトのプロパティを変更すると、その初期値も変更されます。
オブジェクトのプロパティの変更は関数外部(グローバル変数)にも影響します。
オブジェクトのプロパティの変更は関数外でも確認できます。
その他の拡張