回答編集履歴

1

もう少し詳細に

2018/11/27 03:31

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,4 +1,6 @@
1
1
  [アロー関数 - MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
2
+
3
+ この記事の1行目に注目してください。
2
4
 
3
5
 
4
6
 
@@ -14,14 +16,26 @@
14
16
 
15
17
 
16
18
 
19
+ という訳で「アロー関数」はラムダとか無名関数的な役割が強い存在です。
20
+
21
+ thisを作って束縛しないから、非同期のコールバック関数やPromiseのthenに投げ込む用途として使い勝手が良い存在に仕上がっています。
22
+
23
+ 従ってこれからのプログラミングに`let self = this`という行は必要ありません。
24
+
25
+
26
+
27
+ デメリットを考えると、thisやarguments作ってくれないので、
28
+
29
+ ニッチな需要が満たせず普通の無名関数`function () {}`の完全上位互換ではないんですね。
30
+
31
+ 適切に使い分けてください。
32
+
33
+
34
+
17
35
  そもそも、ES6以降はクラスとインスタンス使う代わりに
18
36
 
19
37
  thisに依存したプログラミングするなという思想なので、
20
38
 
21
39
  適切にクラスベースのオブジェクト指向に移行していけば滅多に困る事はありません。
22
40
 
23
-
24
-
25
- そもそもなんでselfを返してるのと思ったら、prototypeにぶら下げる関数作ってるんですね。
26
-
27
41
  クラスベースに置き換えるか、そのまま行くなら一番お外の`function`宣言はアロー関数に置き換え不可能でそのまま使うかの二択です。