@babel/plugin-transform-parameters
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
信息
此插件已包含在 @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
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-parameters
yarn add --dev @babel/plugin-transform-parameters
pnpm add --save-dev @babel/plugin-transform-parameters
bun add --dev @babel/plugin-transform-parameters
注意事项
默认参数会被脱糖(desugar)为 let 声明以保持正确的语义。如果您的运行环境不支持此特性,则需要额外安装 @babel/plugin-transform-block-scoping 插件。
用法
通过配置文件(推荐)
babel.config.json
{
"plugins": ["@babel/plugin-transform-parameters"]
}
通过命令行
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
在宽松模式(loose mode)下,带有默认值的参数会被计入函数的参数数量(arity)。这不符合规范行为——规范中这类参数不会增加函数的参数数量。
注意
建议迁移至顶层配置的 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
提示
你可以在此处阅读更多关于配置插件选项的信息。