为什么babel会以这种方式转换默认参数?

Nic*_*ick 2 ecmascript-6 babeljs

Babel正在将我的ES2015默认参数转换为ES5,但它似乎非常冗长.这是原始功能:

function initStyles(skipScaling = false) {/*...*/}
Run Code Online (Sandbox Code Playgroud)

以下是转换后的结果:

function initStyles() {
  var skipScaling = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
}
Run Code Online (Sandbox Code Playgroud)

如果我(可能天真地)实现这个,我会做这样的事情:

function initStyles(skipScaling) {
  if (skipScaling === undefined) skipScaling = false;
}
Run Code Online (Sandbox Code Playgroud)

Babel以这种方式处理它的原因是什么?

Ber*_*rgi 5

具有默认初始值设定项的参数不计入函数arity.在.length您的initStyles功能应该是0和巴贝尔复制,通过使用arguments对象初始化一个var使用命名参数来代替.