LoginSignup
0
0

More than 3 years have passed since last update.

【javascript】デフォルトパラメータとレスパラメータ

Last updated at Posted at 2020-07-11

こちらの記事は以下の書籍を参考に執筆しました

デフォルトパラメータ

以下はデフォルトパラメータを使用した例

function approvalChart(rating,width=800,height=with/2){
  //処理  
}
const nationalChart=approvalChart(narionalRatings)//800x400
const geogiaChart=approvalChart(geogiaRatings,400)//800x400

出典:PHPフレームワークLaravel入門 第2版

デフォルトパラメータには式が割り当てることができる。
式が評価されるのは関数が評価されるとき。

パラメータのデフォルト値はパラメータリストのインデックスに紐付けられる。

レストパラメータ

function avg(...args){
  //...
}

出典:PHPフレームワークLaravel入門 第2版

これで引数がargsという変数の配列として格納される。

レストパラメータの後にパラメータを配置するとエラーになる。

レスト演算子を使って関数間で引数を渡す

何らかの画像処理を行うライブラリを使用していてログ機能を追加するために処理関数をフックする必要があるとする。多くのライブラリにはミドルフックがあるが、常にそうとは限らない。
そういう場合はモンキーパッチを実行する。

モンキーパッチ

元の関数を呼び出す前にカスタムロジックを注入して関数を再定義するプロセス

{
  //元のメソッドへ参照を取得
  const originProcess = imageDoctor.process;
  //引数をすべて集める新しい関数を定義
  imageDoctor.process = function(...args) {

    //ロブ機能を注入
    console.log('imageDoctor processing', args)

    //argsを使って呼びだされた元の関数の結果を返す。
    return originProcess.apply(imageDoctor, args)
  }
}

出典:PHPフレームワークLaravel入門 第2版

process関数にモンキーパッチを実行し、レスト演算子をまとめた上で元の関数に返している。
これにより、元の関数が常にラッピング関数を同じ引数を使って呼び出されるようになる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0