ECMAScript 2015 (ES6) で、デフォルトパラメータの構文がサポートされました。 C++ や Python のように、仮引数の宣言部でデフォルト引数を定義することができます。
function myfunc(a, b, c=100) {
...
}
ECMAScript 2015 (ES6) より前の JavaScript でデフォルト引数を実現するには、実引数が渡されなかったときに、仮引数の値が undefined
になることを利用します。
function myfunc(a, b, c) {
if (typeof c === 'undefined') {
c = 100; // default value
}
}
上記のように、typeof
でパラメータの型を取得し、それが undefined
という文字列と一致するのを確認するのが一番安全な方法です。
下記のように直接パラメータを undefined
と比較する方法の方がシンプルに記述できますが、undefined
の値は書き換えられる可能性があるため完璧ではありません。
function myfunc(a, b, c) {
if (c === undefined) {
c = 100; // default value
}
}
実引数として偽値 (0
, false
, null
, undefied
, NaN
, ''
) が渡された場合に、デフォルト値で値を置き換えるという手法もあります。
実引数を渡さなかった場合はそのパラメータの値は undefined
になるので、これを利用してデフォルト引数を実現しようという考えですが、この方法では値を渡していても「偽」と判断される値だった場合にデフォルト値に置換されてしまうので、お勧めできる書き方ではありません。
function myfunc(a, b, c) {
c = c || 100;
}