12

我像这样启动了一个 JavaScript/jQuery 点击监听器:

$("#test").on("click", () => {
   console.log("test");
});

这段代码在 Firefox 中运行良好,但在 Chrome 中这似乎给了我一个语法错误。为什么会这样,因为这对我来说看起来像是“好的”语法。

您可以通过以下方式在控制台中快速测试

 var a = () => {return 0;}
 a();

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

4

1 回答 1

33

粗箭头ES6(现在正式称为 ECMAScript 2015)的一个特性。它已在 Firefox 中引入,但尚未在其他浏览器中引入(尤其是在 V8中还没有完全引入,这对于 nodejs/iojs 开发来说很有趣)。

因为它主要是糖,你最好等一下再用。

如果您需要范围绑定(this在函数调用和定义函数的范围中是相同的,我们说的是“词法 this”),那么代替

$("#test").on("click", () => {
   some code
});

你可以简单地做

$("#test").on("click", (function() {
   some code
}).bind(this));

如果您不这样做(如您的示例所示),那么只需执行

$("#test").on("click", function() {
   console.log("test");
});
于 2014-02-18T14:28:43.543 回答