アプリ版:「スタンプのみでお礼する」機能のリリースについて

new Array(3)は、undefinedなのでしょうか?

・下記リンク先を見て、自分でも試してみたのですがうまくいきません
・具体的には、console.log( new Array(3) );すると、[] と表示されます
・console.log( new Array(3).toString() );すると、",," と表示されます

▽new Array()と[]の違い
  http://qiita.com/Hiraku/items/d74690088dfa368875c9

配列
■質問
・なぜ、【undefined, undefined】と表示されないのでしょうか?
・alert( new Array(3) );だと【",,"】、console.log( new Array(3) );だと【[]】。この違いは?
・.toString() );すると、どうして[] が ",,"へ変わるのでしょうか?

A 回答 (1件)

配列もオブジェクトです



["A", "B", "C"]

{0:"A", 1:"B", 2:"C", length:3}
のようなものです

一方
new Array(3)

{length:3}
のようなものです

{0:undefined, 1:undefined, 2:undefined, length:3}
とは違います
要するに穴が開いた配列なのです


配列を文字列化するとjoinメソッドが呼ばれます
toStringでそういう表記になるのはjoinメソッドの仕様ですし、
console.logでそういう表記になるのはconsole.logメソッドの仕様だからとしか言えません

undefinedとならないのはどちらも穴とundefinedを区別した表記にしようとしているからです
べつに "undefined, undefined, undefined" と返すものがあっても不思議ではありません
結局 ({abc:undefined}).abc も ({}).abc もundefinedを返しますしね

ですが実際にundefined値が入っているわけではありません
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>{0:undefined, 1:undefined, 2:undefined, length:3}
>とは違います
>要するに穴が開いた配列なのです

・説明分かりやすかったです
・参考になりましたー

お礼日時:2014/03/22 09:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!