teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

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

2017/05/01 07:38

投稿

think49
think49

スコア18194

answer CHANGED
@@ -12,4 +12,38 @@
12
12
 
13
13
  `length` は String 型の保証とならない(配列も存在しうる)為、String 型に変換し、`JSON.stringify` でシリアライズします。
14
14
 
15
+ ### アロー関数
16
+
17
+ アロー関数/関数宣言/関数式が混在していて、コード全体として統一感のないコードになっている印象を受けます。
18
+ sort のコードだけ別の人が書いたコードなのでしょうか。
19
+ アロー関数を使うのなら、`$(document).ready(function() {});` もアロー関数で書いた方がすっきりするのではないかと思います。
20
+
21
+ ### クロージャ
22
+
23
+ 関数の中に関数があればクロージャといえますが、「`array.sort()` 内のアロー関数」は単純な**コールバック関数**なので、クロージャならではの使い方ではないように思います。
24
+ `function sort (){}` 内の return は `Array.prototype.sort` の返り値を返しているだけです。
25
+
26
+ ```JavaScript
27
+ function sort (array) {
28
+ return array.sort();
29
+ }
30
+ ```
31
+
32
+ 上記コードにコールバック関数が付与されたところで、コードが表す意味は変わりません。
33
+
34
+ ### array2str() のシリアライズ
35
+
36
+ 本題から逸れるのでしょうが、`array2str()` の設計がどうにも気になります。
37
+ 配列を「配列初期化子」となる文字列に変換する事が期待されますが、配列の要素に `,` が存在するだけで出力値が不正になります。
38
+
39
+ ```JavaScript
40
+ function array2str(array) {
41
+ return "[" + array.join(", ") + "]";
42
+ }
43
+
44
+ var array = ['a, bb, ccc, dddd, eeeee', 'ffffff'];
45
+ console.log(array2str(array)); // [a, bb, ccc, dddd, eeeee, ffffff]
46
+ console.log(JSON.stringify(array)); // ["a, bb, ccc, dddd, eeeee","ffffff"]
47
+ ```
48
+
15
49
  Re: garchomp さん