12

次のように JavaScript/jQuery クリック リスナーを開始しました。

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

このコードは Firefox では問題なく動作しますが、Chrome では構文エラーが発生するようです。これは、私には「OK」構文のように見えるためです。

次のようにして、コンソールでこれをすばやくテストできます

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

Firefox 27.0.1 では 0 を返します Chrome では 0 を返します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 に答える