【Javascript】なぜ、「var a = new Array(x,y,z)」を書かない方がいいのか
「var a = new Array(x,y,z)」を書かない方がいいのか」
について書いていきます。
こちらのドキュメントを読んでいて「ハッと」したので、まとめました。
Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳
【内容】
■問い
:なぜ、「var a = new Array(x,y,z)」を書かない方がいいのか」
結論:
引数の値を変更した場合に、意図しない処理となる恐れがあるため。
具体的には、引数が複数ある場合は、配列の値として引数が処理されます。
しかし、引数が単一の場合は、「配列の長さ」として処理されてしまいます。
対策:
配列のリテラルでコーディングします。
※どのようにコーディングするかは冒頭に紹介した資料を参照するかまたは、
下記のソースを参考してください。
//■非推奨の書き方 //コンストラクタの引数が一つの場合は、配列に格納する値としてではなく //配列の長さとして処理される var box1 = new Array(5,10,15); var box2 = new Array(5); //ほかの人かコンストラクタの引数の数をかえてしまった場合 console.log(box1.length); //配列の長さが3である console.log(box2.length); //配列の長さが意図しない長さになってしまう。 console.log(box1[0]); // 値は5 console.log(box2[0]); // 値はなし(undefined) //■推奨される書き方 //配列リテラルを使う var box10 = [10,20,30]; var box15 = [10]; console.log(box10.length); //配列の長さが3である console.log(box15.length); //配列の長さは想定通り1 console.log(box10[0]); // 値は10 console.log(box15[0]); // 値は10