跳至主要内容

@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

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

通过 Node API

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

选项

loose

boolean,默认为 false

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

注意

考虑迁移到顶级的 ignoreFunctionLength 假设。

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

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

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

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

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