@babel/plugin-transform-parameters
这个插件包含在 @babel/preset-env 中
该插件将 ES2015 参数转换为 ES5,包括:
🌐 This plugin transforms ES2015 parameters to ES5, this includes:
- 解构参数
- 默认参数
- 剩余参数
示例
🌐 Examples
在
function test(x = "hello", { a, b }, ...args) {
console.log(x, a, b, args);
}
出
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
- 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
注意事项
🌐 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)
{
"plugins": ["@babel/plugin-transform-parameters"]
}
通过 CLI
🌐 Via CLI
babel --plugins @babel/plugin-transform-parameters script.js
通过 Node API
🌐 Via Node API
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-parameters"],
});
选项
🌐 Options
loose
boolean,默认值为 false。
在宽松模式下,带有默认值的参数会被计入函数的参数个数。这不是规范的行为,在规范中这些参数不会增加函数的参数个数。
🌐 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 假设。
{
"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.
// Spec behavior
function bar1(arg1 = 1) {}
bar1.length; // 0
// ignoreFunctionLength: true
function bar1(arg1 = 1) {}
bar1.length; // 1
你可以在这里了解更多关于配置插件选项的内容