JavaScriptのデフォルト引数
最近,読んでるソースによくこんな記述が出てくる.
function hoge(args) { args = $.extend({ id: '', actions: [] }, args); // ... }
extendメソッドはjQueryのユーティリティ関数のひとつ.
その名の通り,オブジェクトを拡張する.オブジェクトの継承とかコピーを作るときに便利.
上のプログラムだと第一引数のオブジェクトに第二引数のargsオブジェクトの内容を上書きしようとしている.
もし,オブジェクト引数argsにid,actionsプロパティがなかったら,idプロパティに空文字列, actionsプロパティに空配列が代入される.Rubyとか他の言語でいうデフォルト引数のような仕組み.
ちょっと仰々しいと感じた場合は,こんな書き方でもいいと思う.
function hoge(args) { args.id = args.id || ''; args.actions = args.actions || []; //... }