【发布时间】:2016-04-24 05:39:12
【问题描述】:
我正在以最简单的方式使用 ES6 休息参数:
function func(a, ...b) {
for (var i = 0; i < b.length; i += 2) {
console.log(b[i], b[i + 1]);
}
}
我已经安装了babel-preset-es2015,而我的.babelrc 文件只有:
{
"presets": ["es2015"]
}
奇怪的是,结果输出是:
"use strict";
function func(a) {
for (var i = 0; i < arguments.length; i += 2) {
console.log(arguments[i], arguments[i + 1]);
}
}
我在https://phabricator.babeljs.io/T7000 提交了一个错误,但我非常担心,因为这是我第二次使用 Babel 6 错误地进行基本的 ES6 转换。我的设置是否损坏? Babel 6 是否在某处记录为不稳定/阿尔法?还是这个非常受欢迎的模块真的那么糟糕?是否有任何替代的 ES6 转译器,其编写的编译器级严谨性和全面的测试套件可以安全使用?
【问题讨论】:
-
您的设置似乎有问题。我通过你的示例代码运行了 babel 并得到了an output different from yours。我有 es2015 和 stage-1 作为预设,但是否有 stage-1 并不重要。
-
有趣。我正在使用
6.3.13(最新);你用的是最新的吗?或者stage-1是必要的? -
babel-preset-es2015@6.3.13,babel-cli@6.4.0,babel-core@6.4.0。 rest 模块也是 6.3.13(babel-plugin-transform-object-rest-spread@6.3.13 根据 npm list)。
-
es2015 does not contain the rest module;这可能就是它无法正常工作的原因。但是,我确实认为这是一个错误,因为它应该尽早失败,而不是生成不正确、损坏的代码。
-
它确实包含
transform-es2015-parameters,其中提到了其余参数:babeljs.io/docs/plugins/transform-es2015-parameters
标签: javascript ecmascript-6 babeljs variadic-functions transpiler