コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

JavaScriptのデフォルト引数はundefinedを渡した場合でもデフォルト引数を入れてくれる

なるほど、と思ったのでメモ

前提

この仕様はECMA2015からの仕様です、IE11などでは動かない話なのでお気をつけください。

今回着目したいコード

引数に何も設定されていないときに代わりの値として入るデフォルト引数を書く場合の関数を考える

function test(x = 1, y = 1) {
  console.log(`${x} , ${y}`)
}

通常の動き

引数が何も設定されていないとデフォルト引数が使われる

test()
// 1 , 1

test(100)
// 100 , 1

let setVal = 30
test(setVal,20)
// 30 , 20

undefinedな値を引数に使う場合の動き

引数にundefined相当のものがセットされると、undefinedが入らずデフォルト引数の値が入る

test(undefined,100)
// 1 . 100


let nonSetVal
test(20,nonSetVal)
// 20 , 1

参考リンク