コンテンツへスキップ
JavaScriptで宣言されていない変数のタイプ:それは何ですか?

JavaScriptで宣言されていない変数のタイプ:それは何ですか?

JavaScriptで宣言されていない変数のタイプとは何か考えたことはありますか?私が知っている、最初に頭に浮かぶかもしれないことは、宣言されていない変数がどのようにして型を持つことができるのかということです。はい、JavaScriptでは可能です。

2min read

JavaScriptで宣言されていない変数のタイプとは何か考えたことはありますか?私が知っている、最初に頭に浮かぶかもしれないことは、宣言されていない変数がどのようにして型を持つことができるのかということです。はい、JavaScriptでは可能です。

JavaScript で宣言されていない変数

それを理解するために、JavaScript の型を理解することから始めましょう。JavaScript には 7 つの組み込み型があります。それらは次のとおりです。

  1. ヌル
  2. 未定義
  3. ブーリアン
  4. string型
  5. object
  6. symbol (added on ES6)

値が割り当てられている各変数にはタイプがあります。以下にリストされているコードについて考えてみましょう。

var foo = 9;
console.log(typeof (foo)); // number
var koo;
console.log(typeof (koo)); // undefined
var too = 'Infragistics';
console.log(typeof (too)); // string

上記のスニペットでわかるように、値が割り当てられていない場合、変数のタイプは未定義です。

上記のスニペットでわかるように、値が割り当てられていない場合、変数のタイプは未定義です。

ここまで順調に進んでいるため、値が割り当てられていない変数は未定義であることがわかりました。 次のコードスニペットを考えてみましょう。

var koo;
console.log(koo); // undefiend
console.log(typeof (koo)); // undefined

変数kooを作成しましたが、値の割り当てはしていません。 これで、 koo の値とタイプの両方が undefined に設定されます。

変数kooを作成しましたが、値の割り当てはしていません。 これで、 koo の値とタイプの両方が undefined に設定されます。

undefined に関連付けられた type と value を理解したところで、null に移りましょう。JavaScript では、null はプリミティブ型です。 ただし、null 値の型は object です。次に示すコードについて考えてみます。

var foo = null;
console.log(foo); // null
console.log(typeof (foo)); // object

JavaScriptでnull値の型がobjectであるというレガシーバグと考えることができます。

JavaScriptでnull値の型がobjectであるというレガシーバグと考えることができます。

最後に、JavaScriptでは宣言されていない変数にも型があります。宣言された変数の型は未定義です。

console.log(foo);// error foo is not defined
console.log(typeof (foo)); // undefined 

宣言されていない variable の値を読み取ると、JavaScript は "not defined" というエラーを返し、その型を未定義として返します

宣言されていない variable の値を読み取ると、JavaScript は "not defined" というエラーを返し、その型を未定義として返します

さらに、JavaScriptの世界では、未定義は未定義と同じではないことに注意してください。 これで、JavaScriptのさまざまなプリミティブタイプを理解できたと思います。

デモを予約