JavaScriptの「undefined × 1」とは?Chromeコンソール特有の表示の意味を解説
Chromeの開発者ツール(コンソール)で配列を出力したとき、[undefined × 100] のような表示を見たことはありませんか?実はこれはJavaScript言語自体の機能ではありません。Chromeが、初期化されていない配列のインデックス(および配列風オブジェクト)を表示するために採用している、独自の省略表記です。
具体例
例えば、以下のように要素数100の配列を作成してconsole.logで出力してみます。
console.log(Array(100));
出力結果
[undefined × 100]
このように、値が設定されていない100個のスロットを持つ配列が、まとめて「undefined × 100」と表示されます。
なぜこのような表示になるのか
もしChromeが各要素を個別に出力すると、[undefined, undefined, undefined, ...] のように同じ内容が延々と続くことになり、非常に読みづらくなります。そこでChromeは「同じundefinedが連続している」ことを × 個数 の形式で圧縮表示することで、可読性を高めているのです。
補足:疎な配列(スパース配列)との関係
この表示が現れるのは、Array(100) のように長さだけを指定して中身を代入していない「疎な配列(sparse array)」を扱った場合がほとんどです。疎な配列には実際には「ホール(空きスロット)」が存在しており、厳密にはundefinedという値が入っているわけではない点にも注意してください。全要素に明示的にundefinedを代入した場合とは挙動が異なることがあります。
-
JavaScriptの「未宣言(undeclared)」と「未定義(undefined)」の違いとは?
JavaScriptを学んでいると、「未宣言(undeclared)」と「未定義(undefined)」という一見似たような用語に出会うことがあります。どちらも変数に値が存在しない状態に関係していますが、意味も発生する状況もまったく異なります。本記事では、両者の違いをわかりやすく解説し、実際に動作するサンプルコードもご紹介します。 未宣言(Undeclared)とは? 未宣言とは、var、let、constのいずれを使っても宣言されていない変数にアクセスしようとしたときに発生する状態です。この場合、JavaScriptはReferenceError(参照エラー)をスローし、プログラムが意図しな
-
JavaScriptのundefined(未定義)とは?変数の判定方法をサンプルコードで解説
JavaScriptのundefined(未定義)は、変数がまだ宣言されていない、あるいは宣言されていても値が代入されていないことを示す特殊な値です。変数の状態を確認したい場面で頻繁に登場するため、初心者の方にとって押さえておきたい重要な概念の一つです。 undefinedの基本的な役割 undefinedは、次のような状況で返される値です。 変数を宣言したものの、まだ値を代入していない場合 存在しないオブジェクトのプロパティにアクセスした場合 関数の引数が渡されなかった場合 以下は、JavaScriptのundefinedを使って、変数が定義済みかどうかを判定する実装例です。 サンプルコ