Javascriptでのオプション引数を考える


引数を渡さなくてもいいし、渡すことでオプション設定できるような処理を考える。

javascriptだと可変長引数の関数を書く方法が色々とあるので、それぞれ書いてみてどれを使うのがいいか考えてみます。

比較的新しい書き方もありますが使えない環境はそうそうないと思う。Babelは偉大。

1.引数で代入する

ちょっとした処理でよく使うように思う。

引数省略で後半のパラメータをデフォルト値にすることが出来る。

関数自体は書きやすいけど使う側で何を渡していいか迷うこともある。

2.スプレッド構文

変数前にピリオド3つ(...)を付けてオブジェクトを展開する演算子があります。

これを引数に用いた場合は逆に複数引数を配列として扱うことが出来る。

書き方によって引数の前省略や後省略などできるので可変引数としての自由度は高いが関数自体が読みにくくなってしまう。

 

配列のインデックスをキーとして考えると、こう書くこともできる。

とはいえこんな書き方は見たことはない。

3.Argumentsオブジェクトを使う

この変数は関数内であれば使えるがアロー構文では使えない

Array風のオブジェクトなので適当に変換してからスプレット構文時と同様に使う。

かなり昔のNode.jsプラグインでよく見た気がするけど最近では全く見ない。

色々書く方法がある中でもうこれを使うメリットはないように思う。

4.Javascriptオブジェクトのマージ

デフォルト値のオブジェクトを設定して、スプレッド構文を使ってマージする。

これまでと違って引数の順序を気にする必要がない。

関数側も使う側もわかりやすく使いやすい。一番好き。

5.オブジェクトキーを変数として利用+初期化

以前書いたオブジェクトキーと変数の関係に初期値を適応した感じです。

つまりこういうことが出来る。

まあ読みにくいだけなのですることはないと思います。

 

マージするわけではないので必要ない部分(d)は無視されます。

また引数にオブジェクトは必須で空で呼び出すとundefinedエラー。

これも思いついたはいいけど見たことはない。


コメントを残す

メールアドレスが公開されることはありません。