ES6の新機能を学ぶ2 ~デフォルトパラメータとレストパラメータ~

前回に引き続き、今回はES6(ES2015)の新機能である関数パラメータの拡張についてみていきたい。

ES6では、新たにデフォルトパラメータとレストパラメータという機能が追加された。

デフォルトパラメータは、Ruby等では一般的だが、関数の引数にデフォルト値を設定できるものである。

ES5までは、引数にデフォルト値を持たせたい場合、以下のようにコーディングしていた。

function showMessage(message, person){
  message = (message === undefined) ? 'Hello!' : message;
  person = (person === undefined) ? 'jackson' : person;
  console.log(message + ', ' + person);
}

さすがにこれではコードが読みづらい。

ES6では以下のようにパラメータにデフォルト値を持たせることが可能だ。

function showMessage(message='Hello!', person='jackson'){
  console.log(message + ', ' + person);
}

見比べてみると可読性の向上は明らかである。

次にレストパラメータだが、これは関数が可変長の引数を受け取れるというものである。

従来ES5で可変長の引数を受け取るためには、以下のようなコードを書いていた。

function print(){
  var args = Array.prototype.slice.call(arguments);
  args.forEach(function(data){
    console.log(data);
  });
}
print('tako', 'ika');

関数内でわざわざ

var args = Array.prototype.slice.call(arguments);

としているのは、argumentsがArrayに似たオブジェクトであり、Arrayそのものではないため、配列として扱うために変換する必要があるためである。

ES6では以下のように書けるため、コードが非常にシンプルになった。

function print(...rest){
  rest.forEach(function(data){
    console.log(data);
  });
}
print('tako', 'ika');

ES6の新機能を学ぶ2 ~デフォルトパラメータとレストパラメータ~」への1件のフィードバック

  1. ピンバック: ES6の新機能を学ぶ3 ~スプレッドオペレータと分割代入~ | Solutionware開発ブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2 + twenty =