为什么Google Chrome不支持此JavaScript语法?

Bik*_*ire 12 javascript jquery google-chrome arrow-functions

我发起了一个JavaScript/jQuery点击监听器,如下所示:

$("#test").on("click", () => {
   console.log("test");
});
Run Code Online (Sandbox Code Playgroud)

这段代码在Firefox中完美运行,但在Chrome中,这似乎给我一个语法错误.这是为什么,因为这对我来说看起来像'ok'语法.

您可以通过操作在控制台中快速测试

 var a = () => {return 0;}
 a();
Run Code Online (Sandbox Code Playgroud)

在Firefox 27.0.1中,它返回0 In Chrome返回 SyntaxError: Unexpected token )

Den*_*ret 33

脂肪箭头ES6的特性(现在正式称为的ECMAScript 2015).它已在Firefox中引入,但尚未在其他浏览器中引入(尤其不完全在V8中,这对于nodejs/iojs开发很有意义).

由于它主要是糖,你最好在使用之前等待.

如果你需要范围绑定(this在函数调用和定义函数的范围内是相同的,我们说的是"lexical this"),而不是

$("#test").on("click", () => {
   some code
});
Run Code Online (Sandbox Code Playgroud)

你可以干脆做

$("#test").on("click", (function() {
   some code
}).bind(this));
Run Code Online (Sandbox Code Playgroud)

如果你不这样做(如你的例子),那就干脆做

$("#test").on("click", function() {
   console.log("test");
});
Run Code Online (Sandbox Code Playgroud)

  • @MarcoLuglio你弄错了.请查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Lexical_this (3认同)