MW211 EXIT

devlog
JavaScript/配列定義を文字列定義と誤認すると
2014年05月16日
配列は「'」で囲う必要はない。

以下、通常の配列定義をした場合の挙動。
┌──────────────────────────────────────┐
│var 配列 = [1,2,3];                                                         │
├──────────────────────────────────────┤
│alert(配列.length);                                                    //→3│
├──────────────────────────────────────┤
│for (var i = 0; i < 配列.length; i++) {                                     │
│    alert(配列[i]);                                      //→「1」「2」「3」│
│}                                                                           │
├──────────────────────────────────────┤
│for (var key in 配列) {                                                     │
│    alert(配列[key]);                                    //→「1」「2」「3」│
│}                                                                           │
└──────────────────────────────────────┘

これを誤って「'」で囲って文字列定義にしてしまった場合の挙動。
┌──────────────────────────────────────┐
│var 配列 = '[1,2,3]';                                                       │
├──────────────────────────────────────┤
│alert(配列.length);                                                    //→7│
├──────────────────────────────────────┤
│for (var i = 0; i < 配列.length; i++) {                                     │
│    alert(配列[i]);                  //→「[」「1」「,」「2」「,」「3」「]」│
│}                                                                           │
├──────────────────────────────────────┤
│for (var key in 配列) {                                                     │
│    alert(配列[key]);                //→「[」「1」「,」「2」「,」「3」「]」│
│}                                                                           │
└──────────────────────────────────────┘
文字列も配列の一種なので、普通の動作してしまう(よって、気づきづらく厄介)。

そんな馬鹿なことはしないよと思うかもしれないが、
JSON文字列の配列とかを操作していると、うっかりやらかしてしまうものだ。
分類:JavaScript