メインコンテンツにスキップ

@babel/plugin-transform-parameters

情報

このプラグインは@babel/preset-envに含まれています。

このプラグインはES2015のパラメータをES5に変換します。これには以下が含まれます。

  • 分割代入パラメータ
  • デフォルトパラメータ
  • レストパラメータ

入力

JavaScript
function test(x = "hello", { a, b }, ...args) {
console.log(x, a, b, args);
}

出力

JavaScript
function test() {
var x =
arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "hello";
var _ref = arguments[1];
var a = _ref.a,
b = _ref.b;

for (
var _len = arguments.length,
args = Array(_len > 2 ? _len - 2 : 0),
_key = 2;
_key < _len;
_key++
) {
args[_key - 2] = arguments[_key];
}

console.log(x, a, b, args);
}

インストール

npm install --save-dev @babel/plugin-transform-parameters

注意点

デフォルトパラメータは、適切なセマンティクスを保持するために、`let`宣言にデシュガーされます。お使いの環境でこれがサポートされていない場合は、@babel/plugin-transform-block-scopingプラグインが必要です。

使用方法

babel.config.json
{
"plugins": ["@babel/plugin-transform-parameters"]
}

CLI経由

シェル
babel --plugins @babel/plugin-transform-parameters script.js

Node API経由

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-parameters"],
});

オプション

loose

boolean、デフォルトはfalse

looseモードでは、デフォルト値を持つパラメータは関数のarityにカウントされます。これは、これらのパラメータが関数のarityに追加されない仕様とは異なる動作です。

注意

トップレベルのignoreFunctionLengthの仮定に移行することを検討してください。

babel.config.json
{
"assumptions": {
"ignoreFunctionLength": true
}
}

`ignoreFunctionLength`の仮定の下では、JavaScriptエンジンは`arguments`を参照しない関数を完全に最適化するため、Babelはよりパフォーマンスの高いソリューションを生成します。独自のベンチマークを行い、このオプションがアプリケーションに適しているかどうかを判断してください。

JavaScript
// Spec behavior
function bar1(arg1 = 1) {}
bar1.length; // 0

// ignoreFunctionLength: true
function bar1(arg1 = 1) {}
bar1.length; // 1
ヒント

プラグインオプションの設定について詳しくは、こちらをご覧ください。