2016-09-15 8 views
-1

私は、ES6では矢印機能を持っています。JavaScriptでは矢印関数を使用するのが一般的です。

共通サンプル: または[...].reduce((a,b) => {...})

私は自分自身に尋ねています。function(){...}の代わりに、これらの矢印機能を使用することをお勧めしますか?それはあなたが今日見ているものですから。この上

私の個人的な2セント:私は、一般的に、私は矢印を使用して検討し、技術およびコンテキストビューから見

  • 矢印関数を使用したいのですが、可読性と保守性の観点から見

    • 不要な動作につながる可能性があるため、関数は例外でなく標準でなければなりません。例:矢印機能のコンテキストを変更することは無意味です:(()=>{}).apply(window)は全く効果がありません。つまり:特定の文脈を必要とする図書館は、矢印の機能によって容易に膝に持ち込むことができます。

    これは私の考えのちょっとした抜粋です。あなたが実際にその状況にとどまる必要がないときには、間違っていると感じるので、私は矢印機能を使用するたびに、この特定のパラノイアを持っています。

  • +4

    私はあなたが適切なときに使用し、適切でないときには使用しないでください。 – vlaz

    +1

    あなたはビジターです。 – joh04667

    +0

    @vlaz:それは本当に精巧な答えです。ありがとう。 – androidavid

    答えて

    0

    あなたが言ったように、矢印機能は語彙的にthisをバインドします。それはまた、いくつかの構文的な砂糖を提供します。関数を引数にとるメソッド呼び出しでの使用(、.filter()など)のような、いくつかの状況では、これは素晴らしいことです。

    基準が適用される限り、何もありません。確かにあなたが行っている場所がありますメソッドを定義するときのように、矢印機能を使いたいと思っていますが、ほとんどの場合、あなたのチームが使用しているものと一緒に行きたいと思っています。あなたのチームはそうすることはできません。

    フロントエンドのWeb開発では、矢印機能は、Babelをその上に維持している場合を除いて、思うほど一般的ではありません。ノードの開発については、もっと多くの矢印を見たいと思っていますが、ほとんどの場合、彼らはニッチなアイテムであり、多くの場合、function()を使用することによる客観的なメリットはありません。

    -1

    私が理解しているように、トランスバータを使用しているときは、それをES5に解析するため、パフォーマンスの違いはほとんどないので、コンテキストバインディングが必要ない場合でも一貫性が損なわれません。

    ネイティブでは、一部のブラウザではパフォーマンスが若干低下すると聞いていますが、ES6/7が完全に実装され、ブラウザで最適化されていると、それはなくなる可能性があります。

    簡潔さと明快さの利点を考慮して、完全にサポートされてから使用しない理由はないと思います。

    -1

    現在の矢印機能のコンテキストとは何かを知っておくことをお勧めします。

    矢印はコンストラクタにできません。

    ノンリニア語thisは以前に悪用されていたもので、ES6開発ではまれなことです。もしjQuery用のES6コードを書いているのであれば、thisが問題であれば、文字列が指に結ばれているはずです。

    +0

    この質問に対してネガティブに爆発した素敵なSOのエキスパートのように見えます。良い仕事を続け、決してそれをあなた自身に保たないでください。 – estus

    関連する問題