2017-09-22 13 views
-2

矢印機能は既存の機能の動作を再定義できますか? jQueryのgetを使用する(はい、私が知っている) - 私は矢印関数が使用されるかどうかに応じて、この成功の2つの異なる値を得ています。それはなぜ起こるのか誰も説明できますか?矢印機能はこのコンテキストを変更します

var get = (e) => { 
    return new window.Promise((resolve, reject) => { 
     $.ajax({ 
     context: {test: 1}, // this 
     type: "GET", 
     url: "...", 
     complete: function() { 
      // this is only correct when using old syntax, arrow 
      // function would redefine the value of this to the function's parent 
     }, 
     complete:()=>{ } // Is not working, this is not what I'd expect. 
     }); 
    }); 
+0

矢印機能についての約5分の研究では、どの矢印機能が/何であるかをかなり簡単に説明できます。 –

答えて

1

アロー機能が.bind(this)のすべての時間を使用して回避するのに役立つthisのスコープを変更するために導入され、主にました。それはあなたが独自のこの、引数、スーパー、またはnew.targetに結合しないMDN: Arrow Functions

矢印関数式は、関数式より短い構文を持っており、異なる値

を得るのは当然です。

より洗練された、より洗練された構文は第2の価値があります。彼らは確かに、これは方程式から取り出されたことを今function


のための絶対的な代替ではありません - あなたはまた、あなたの例では2つのoncompleteコールバックを持っています。

+1

まさに。同様に、 'Array.forEach'の' for'ループごとに盲目的に入れ替えることはできません。矢印関数は、より見栄えの良い関数構文ではなくてはなりません。 –

関連する問題