我想找一种方法在浏览器控制台中运行ECMAScript 6代码,但大多数浏览器都不支持我寻找的功能。例如,Firefox是唯一支持箭头函数的浏览器。
是否有一种方式(扩展程序、用户脚本等)可以在Chrome上运行这些特性?
我想找一种方法在浏览器控制台中运行ECMAScript 6代码,但大多数浏览器都不支持我寻找的功能。例如,Firefox是唯一支持箭头函数的浏览器。
是否有一种方式(扩展程序、用户脚本等)可以在Chrome上运行这些特性?
在 Chrome 浏览器中,大多数 ES6 特性都被隐藏在一个名为“实验性 JavaScript 特性”的标志后面。请访问 chrome://flags/#enable-javascript-harmony
,启用此标志,重新启动 Chrome,然后您将获得许多新特性。
箭头函数目前尚未在 V8/Chrome 中实现, 因此此标志不会“解锁”箭头函数。
由于箭头函数是一种语法变化,因此不可能在不改变 JavaScript 解析方式的情况下支持该语法。如果您喜欢使用 ES6 进行开发,则可以编写 ES6 代码并使用 ES6 到 ES5 编译器生成与所有现有(现代)浏览器兼容的 JavaScript 代码。
例如,访问 https://github.com/google/traceur-compiler。截至目前为止,它支持 ES6的所有新语法特性。如果您结合本答案顶部提到的标志使用,就会非常接近所需结果。Babel是一个很好的转译器,可以用来尝试ES6。你可以在他们网站的“试一下”部分在浏览器中运行ES6。它的功能类似于jsfiddle。
例如箭头函数:
let add = (x,y) => x + y;
let result = add(1,1);
console.log(result);
显示结果2
。
Babel“transpiles”,即将ES6转换为ES5的JavaScript,可通过当前浏览器技术运行。您可以通过npm install -g babel
安装Babel。安装后,可以将上面的箭头示例保存到文件中。假设我们将文件称为“ ES6.js”。假定已经安装了node,则在命令行中将输出管道传输到节点:
babel ES6.js | node
然后将看到输出2
。您可以使用以下命令永久保存翻译文件:
babel ES6.js --out-file output.js
output.js“转译”:
"use strict";
var add = function (x, y) {
return x + y;
};
var result = add(1, 2);
console.log(result);
ES6是一个快速发展的目标。请参考兼容性表查找像Traceur和Babel这样的转译器和浏览器支持的功能。你甚至可以展开图表以查看用于验证兼容性的测试:
如果想在浏览器中尝试最新的ES6语法,可以尝试使用Firefox夜间版或Chrome发布渠道。
sudo npm install -g --save-dev babel-cli babel-preset-es2015
和$(npm bin)/babel ES6.js --presets es2015
才能使其正常工作,参考链接:http://babeljs.io/docs/plugins/preset-es2015/。 - 林果皞您可能正在寻找以下链接之一:
在开发过程中使用Babel,可以自动将JavaScript转换为跨浏览器兼容的代码。或者,如果您正在使用TypeScript,则可以放心使用;您的代码已经被转译了。
这个问题特别提到了使用箭头函数。除了IE和Opera Mini,箭头函数现在已经在所有浏览器中原生支持。请参见caniuse。
如果您想使用箭头函数,以前可能有一些困难。下面的历史记录显示了在不同时间点玩弄此功能所需的内容。
1) 首先,在启用了
chrome://flags/#enable-javascript-harmony
标志的Chrome Canary中,箭头函数仅在其中起作用。看起来,至少在版本39中已经部分实现了此功能。2) 然后,箭头函数可以在Google Chrome中通过JavaScript Harmony标志使用。
3) 最后,在Google Chrome 45中,默认启用了箭头函数。
您可以期望其他新的ECMAScript功能也会出现类似的模式。
只需使用“use strict”模式,进入一个闭包(不是必需的,但这是一个很好的方法),Chrome就能够将您的代码作为ES6执行...
(function(){
'use strict';
//your ES6 code...
})();
以下是一个示例... http://jsbin.com/tawubotama/edit?html,js,console,output,尝试删除 use strict 模式行,并再次尝试,控制台将记录错误信息。
浏览器正在采用ES6 - 即使是一直对大多数HTML5标准表现不积极的Safari也是如此。 给Google时间,他们将逐一实现ES6功能。 例如,箭头函数现在可用于生产通道,并且无需标志。耐心等待。
不要期望扩展;你不能逐行将ES6翻译成ES5,因此我们无法仅使用Babel来扩展控制台。
的确有一个实验性js标志,但它存在很好的理由。 V8具有代理,但是使用旧的(非标准)语法,并且存在安全问题。 它的解构也不完整:您会发现在某些情况下它可以工作,在其他情况下则不行。
如果您只想尝试ES6,请简单地使用Edge / Firefox进行尝试。 它们都覆盖了几乎所有的Babel,具有控制台和调试器,并具有Babel无法提供的功能。
class
syntax)。 - Adam Brown--enable-javascript-harmony
标志,则以下内容将返回false:/(?<!a)b/.test('ab')
(如果未设置标志,则抛出下一个错误:“Uncaught SyntaxError: Invalid regular expression: /(?<!a)b/: Invalid group”)。 - Rob W