問題タブ [arrow-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ECMAScript 6 で矢印関数を使用する必要があるのはいつですか?
とES6() => {}
でfunction () {}
関数を記述する 2 つの非常によく似た方法が得られます。他の言語では、ラムダ関数は匿名であることで区別されることがよくありますが、ECMAScript では、どの関数も匿名にすることができます。2 つのタイプのそれぞれに固有の使用ドメインがあります (つまり、this
明示的にバインドする必要があるか、明示的にバインドしない必要がある場合)。これらのドメインの間には、どちらの表記法でも対応できる膨大な数のケースがあります。
ES6 のアロー関数には、少なくとも 2 つの制限があります。
- を使用しないでください
new
。作成時には使用できませんprototype
this
初期化時のスコープへのバインドを修正
これらの 2 つの制限は別として、アロー関数は理論的にはほとんどどこでも通常の関数を置き換えることができます。実際にそれらを使用する正しいアプローチは何ですか? アロー関数を使用する必要があります。例:
- 「どこでも機能する」、つまり、関数が
this
変数にとらわれない必要はなく、オブジェクトを作成していません。 - 特定のスコープにバインドする必要がある「必要な場所」、つまりイベントリスナー、タイムアウトのみ
- 「短い」関数を使用するが、「長い」関数を使用しない
- 別のアロー関数を含まない関数のみ
ECMAScript の将来のバージョンで適切な関数表記を選択するためのガイドラインを探しています。ガイドラインは、チーム内の開発者に教えられるように明確にする必要があります。また、ある関数表記から別の関数表記へと頻繁にリファクタリングする必要がないように、一貫性がある必要があります。
この質問は、今後の ECMAScript 6 (Harmony) のコンテキストでコード スタイルについて考えたことがある人、およびこの言語を既に使用したことがある人に向けられています。
typescript - Typescript:子クラスのスーパーキーワードを使用して、基本クラスのアロー関数で定義されたメソッドを呼び出す方法は?
与えられた
次のエラー メッセージが表示されます。
「super」キーワードを介してアクセスできるのは、基本クラスのパブリック メソッドのみです。
@Basarat はここでいくつかの情報を提供していますが、これは言語に対する本当のハックのようです。 プロトタイプで関数を定義する typescript 矢印演算子
「これ」の文脈上の使用を維持しながら、これをどのように行うことができますか?
アロー関数を適切に使用していますか、それともコールバックのようなものを宣言する方法としてのみ使用する必要がありますか?
javascript - この ECMAScript Harmony アロー関数式を返すと予期しない動作が発生するのはなぜですか?
私は ECMAScript 6 の新しい機能を試してきましたが、この質問はアロー関数に関するものです。次のコードは、Function
オブジェクトのプロトタイプに割り当てられた単純な関数合成メソッドです。単純な匿名関数を使用すると完全に機能しますが、代わりにアロー関数を使用すると機能しません。
http://www.es6fiddle.com/hyo32b2p/
最初のもの25
はコンソールに正しくログを記録しますが、2番目のものは関数(hello) { return hello + 10; }105
をログに記録しますが、何が間違っているのか正確にはわかりません。
アロー関数は最後のステートメント (この例では最初と最後) を暗黙的に返すことになっているため、アロー関数内で値を返しません。手元の問題は字句スコープと this の値に関係があると思います。 、 多分。誰でも説明できますか?
javascript - オブジェクト プロパティとしての ECMA Script 6 Arrow 関数
これは無意味なことだと思いますが、なぜうまくいかないのかわかりません。
「this」はグローバル オブジェクトにバインドされており、getName が呼び出されたオブジェクトにはバインドされていません。上記は次と同等であると予想していました:
(こんな風に書けばいいのに)
javascript - コーヒースクリプトで太い矢印を使用する代わりに、変数でこれに影響を与えます
太い矢印を使用する (関数を this の現在の値にバインドする) ことと、@ の値を変数に入れることの違いは何ですか?
ファットアロー
と
@は、太い矢印を使用して周囲のスコープが乱雑にならないようにすることを示唆しています。どのように?