回答編集履歴

1

アロー関数/クロージャ/シリアライズを追記

2017/05/01 07:38

投稿

think49
think49

スコア18156

test CHANGED
@@ -26,4 +26,72 @@
26
26
 
27
27
 
28
28
 
29
+ ### アロー関数
30
+
31
+
32
+
33
+ アロー関数/関数宣言/関数式が混在していて、コード全体として統一感のないコードになっている印象を受けます。
34
+
35
+ sort のコードだけ別の人が書いたコードなのでしょうか。
36
+
37
+ アロー関数を使うのなら、`$(document).ready(function() {});` もアロー関数で書いた方がすっきりするのではないかと思います。
38
+
39
+
40
+
41
+ ### クロージャ
42
+
43
+
44
+
45
+ 関数の中に関数があればクロージャといえますが、「`array.sort()` 内のアロー関数」は単純な**コールバック関数**なので、クロージャならではの使い方ではないように思います。
46
+
47
+ `function sort (){}` 内の return は `Array.prototype.sort` の返り値を返しているだけです。
48
+
49
+
50
+
51
+ ```JavaScript
52
+
53
+ function sort (array) {
54
+
55
+ return array.sort();
56
+
57
+ }
58
+
59
+ ```
60
+
61
+
62
+
63
+ 上記コードにコールバック関数が付与されたところで、コードが表す意味は変わりません。
64
+
65
+
66
+
67
+ ### array2str() のシリアライズ
68
+
69
+
70
+
71
+ 本題から逸れるのでしょうが、`array2str()` の設計がどうにも気になります。
72
+
73
+ 配列を「配列初期化子」となる文字列に変換する事が期待されますが、配列の要素に `,` が存在するだけで出力値が不正になります。
74
+
75
+
76
+
77
+ ```JavaScript
78
+
79
+ function array2str(array) {
80
+
81
+ return "[" + array.join(", ") + "]";
82
+
83
+ }
84
+
85
+
86
+
87
+ var array = ['a, bb, ccc, dddd, eeeee', 'ffffff'];
88
+
89
+ console.log(array2str(array)); // [a, bb, ccc, dddd, eeeee, ffffff]
90
+
91
+ console.log(JSON.stringify(array)); // ["a, bb, ccc, dddd, eeeee","ffffff"]
92
+
93
+ ```
94
+
95
+
96
+
29
97
  Re: garchomp さん