デフォルト引数 (default parameter)
引数の値がundefined
のとき、代わりの値を指定できるのがデフォルト引数(default parameter)です。
デフォルト引数の構文
JavaScriptのデフォルト引数は、引数の右に=
とデフォルト値を書きます。
js
// 関数宣言function関数名 (引数 =デフォルト値 ) {}// アロー関数(引数 =デフォルト値 ) => {};
js
// 関数宣言function関数名 (引数 =デフォルト値 ) {}// アロー関数(引数 =デフォルト値 ) => {};
TypeScriptで、型注釈とデフォルト引数の両方を書く場合は、型注釈のほうを先に書きます。
ts
// 関数宣言function関数名 (引数 :型 =デフォルト値 ) {}// アロー関数(引数 :型 =デフォルト値 ) => {};
ts
// 関数宣言function関数名 (引数 :型 =デフォルト値 ) {}// アロー関数(引数 :型 =デフォルト値 ) => {};
undefined
のときデフォルト値が使われる
JavaScriptの引数は省略するとundefined
になります。
js
functionfoo (x ) {console .log (x );}foo ();
js
functionfoo (x ) {console .log (x );}foo ();
デフォルト引数は、引数がundefined
のときに、その値が変わりに代入されます。たとえば、次の例の関数呼び出しは、引数を渡していないのでx
はundefined
です。そのため、デフォルト値1
が代入されます。
ts
functionfoo (x = 1) {console .log (x );}foo ();
ts
functionfoo (x = 1) {console .log (x );}foo ();
次のように、引数にundefined
を渡す場合も、デフォルト値が代入されます。
ts
foo (undefined );
ts
foo (undefined );
引数がnull
のときは、デフォルト引数は適用されません。ご注意ください。
js
functionfoo (x = 1) {console .log (x );}foo (null);
js
functionfoo (x = 1) {console .log (x );}foo (null);
引数リストの途中に書ける
JavaScriptのデフォルト引数は、デフォルト値を持たない引数の前に書くこともできます。
js
functionfoo (x ,y = 2,z ) {console .log (x ,y ,z );}foo (1,undefined , 3);
js
functionfoo (x ,y = 2,z ) {console .log (x ,y ,z );}foo (1,undefined , 3);
初期化処理が書ける
JavaScriptのデフォルト値には式が書けます。
js
functionfoo (x = 2 * 2) {}
js
functionfoo (x = 2 * 2) {}
式が書けるので、関数呼び出しも書けます。
js
functionfoo (x =parseInt ("1.5")) {}
js
functionfoo (x =parseInt ("1.5")) {}
非同期処理は書けない
ただし、await
を使って、非同期関数を呼び出すような処理は書けません。
ts
async function'await' expressions cannot be used in a parameter initializer.2524'await' expressions cannot be used in a parameter initializer.foo (x = awaitPromise .resolve (1)) {}
ts
async function'await' expressions cannot be used in a parameter initializer.2524'await' expressions cannot be used in a parameter initializer.foo (x = awaitPromise .resolve (1)) {}
型推論が効く
TypeScriptでは、デフォルト引数があると、引数の型推論が効きます。そのため、デフォルト引数が型注釈を省略することもできます。
ts
functionfoo (x = 1) {}
ts
functionfoo (x = 1) {}
学びをシェアする
・JavaScriptのデフォルト引数は引数がundefinedのとき使われる値
・構文: function 関数名(引数: 型 = デフォルト値) {}
・nullのときはデフォルト値にならない
・引数の途中に書ける
・簡単な初期化処理も書ける
・TypeScriptでは型推論が効く
『サバイバルTypeScript』より