@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
function test(x = "hello", { a, b }, ...args) {
console.log(x, a, b, args);
}
输出
¥Out
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
npm install --save-dev @babel/plugin-transform-parameters
yarn add --dev @babel/plugin-transform-parameters
pnpm add --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)
{
"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
。
¥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.
{
"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