ES6 rest 参数不适用于 babel
ES6 rest parameter not working with babel
我以最简单的方式使用 ES6 rest 参数:
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 是否在某处被记录为不稳定/alpha?或者这个非常受欢迎的模块真的那么糟糕吗?是否有任何替代的 ES6 转译器以编译器级的严谨性和全面的测试套件编写,可以安全使用?
您正在寻找的转换是 http://babeljs.io/docs/plugins/transform-object-rest-spread/,它不是babel-preset-es2015
的一部分,而是babel-preset-stage-2
的一部分,或者您可以单独安装它。
这是我的发现。
预设是转换插件的集合,所有插件都使用 ^
进行版本控制。似乎随着这些转换版本的碰撞,预设的新版本不会发布。对于已知可以协同工作的一组精选插件来说,这不是一个好的来源。所以就我而言,尽管我有 最新的babel-preset-es2015
,并且不存在新版本,但这并不意味着我也拥有所有最新的插件。
强制更新版本的组成插件为我解决了这个问题。预设版本显然不会告诉您任何有用的信息。如果您没有直接依赖插件本身,则强制它们更新的唯一方法是强制重新安装预设。
我遇到了与 Jacob 相同的 ES6 rest 参数问题。我听从了yaycmyk的建议并做了npm install babel-preset-stage-2
,然后将我的gulp文件从 pipe(babel({ presets: ['es2015'] }))
至 pipe(babel({ presets: ['es2015', 'stage-2'] }))
,在我快乐的路上,我去了。
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- PHP中的setcookie仅适用于localhost
- html5 drawImage适用于firefox,而不是chrome
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- ResolveUrl是否适用于././也
- Firebase updateChildValues适用于IOS,但不适用于Web和Android
- JavaScript警报适用于int,但不适用于string
- SQLite插件适用于Mac和Windows,但不适用于手机上的Safari
- Regex Replace仅适用于Last Match
- window.onload适用于aspx页面,但不适用于普通html
- Jquery Ajax POST不工作.适用于GET
- 画布上的自定义字体仅适用于safari
- Javascript仅适用于alert()和Debug模式
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- Regex不适用于Firefox,但适用于Chrome
- 通过单击主菜单外部关闭子菜单'不适用于IE,但适用于Firefox&铬
- AngularJS$http.post没有'不适用于Chrome,仅适用于IE
- Javascript仅适用于jQuery mobile中的页面刷新
- 关闭当前选项卡并打开一个新的-仅适用于Chrome