Skip to main content

@babel/plugin-transform-parameters

信息

此插件包含在 @babel/preset-env

¥This plugin is included in @babel/preset-env

该插件将 ES2015 参数转换为 ES5,包括:

¥This plugin transforms ES2015 parameters to ES5, this includes:

  • 解构参数

    ¥Destructuring parameters

  • 默认参数

    ¥Default parameters

  • 剩余参数

    ¥Rest parameters

示例

¥Examples

输入

¥In

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

输出

¥Out

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);
}

安装

¥Installation

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

注意事项

¥Caveats

默认参数脱糖到 let 声明中以保留正确的语义。如果你的环境不支持此功能,那么你将需要 @babel/plugin-transform-block-scoping 插件。

¥Default parameters desugar into let declarations to retain proper semantics. If this is not supported in your environment then you'll need the @babel/plugin-transform-block-scoping plugin.

用法

¥Usage

¥With a configuration file (Recommended)

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

通过 CLI

¥Via CLI

Shell
babel --plugins @babel/plugin-transform-parameters script.js

通过 Node API

¥Via Node API

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

选项

¥Options

loose

boolean,默认为 false

¥boolean, defaults to false.

在松散模式下,具有默认值的参数将计入函数的 arity。这不是这些参数不添加到函数的规范行为。

¥In loose mode, parameters with default values will be counted into the arity of the function. This is not spec behavior where these parameters do not add to function arity.

提醒

考虑迁移到顶层 ignoreFunctionLength 假设。

¥Consider migrating to the top level ignoreFunctionLength assumption.

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

ignoreFunctionLength 假设下,Babel 将生成一个性能更高的解决方案,因为 JavaScript 引擎将完全优化不引用 arguments 的函数。请进行你自己的基准测试并确定此选项是否适合你的应用。

¥Under the ignoreFunctionLength assumption, Babel will generate a more performant solution as JavaScript engines will fully optimize a function that doesn't reference arguments. Please do your own benchmarking and determine if this option is the right fit for your application.

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

// ignoreFunctionLength: true
function bar1(arg1 = 1) {}
bar1.length; // 1
提示

你可以阅读有关配置插件选项 此处 的更多信息

¥You can read more about configuring plugin options here