web関連
【javascript】underfinedについて
よくみる字面なんだけどちゃんと調べたことってないなぁって思ったので調べてみた
undefinedとは
undefinedは「グローバル変数」で「変数を宣言したときの初期値」
undefinedは日本語で「定義されていない」って意味
型はundefinedで値はundefinedで初期値はundefined
確認がてら書き出し
// グローバル変数undefinedの値確認
console.log(undefined);// undefined
// 型チェック
console.log(typeof(undefined));// undefined
// 変数の初期値チェック
let test;// 空の変数を宣言
console.log(test);// undefined
条件式でundefinedかどうか確認
if文とかでundefinedかどうかチェックするときに、型まで厳密にチェックする===
を使わないと駄目みたい
==
だとnullまでチェックしちゃうんだって
let test;
if (test === undefined) {
console.log("undefinedだよ");// 初期値undefinedだから出力
}
if (test === void 0) {
console.log("undefinedだよ");// 初期値undefinedだから出力
}
2パターンのっけとく
undefinedはグローバル変数で必ずしも値がundefinedじゃない可能性があるとかで
void 0
を使えば必ずundefinedを返すとかで使ったりするみたいただ、この書き方だと変数が宣言されてなかった時にエラーになっちゃうので
if (typeof test === undefined) {
console.log("undefinedだよ");// 型がundefinedだから出力
}
ってtypeof
で型で判別をするのであれば変数があるかないかじゃなくて、型がundefinedかどうかでチェックできるからエラー吐かないみたい
でも、この書き方も使わないでくれみたいな記事あるね
Memo:なんか難しかったしよくわかんなかった
グローバル変数undefinedの代入と宣言周りについて
グローバル変数としてundefinedが存在しているから再宣言禁止のlet
を使うと「Uncaught SyntaxError: Identifier ‘undefined’ has already been declared」って定義済みだよーってエラーを吐く
let undefined = 1;
console.log(undefined);// Error
確認で試してみた
じゃあ、var
使って宣言すっかってグローバル変数を再宣言しても値は変わらない
var undefined = 1;
console.log(undefined);// undefined
当然代入も駄目
undefined = 1;
console.log(undefined);// undefined
グローバル変数としてundefinedは存在するよって確認
でも、ローカル変数として使う分には使う分には問題なく変数として宣言できるし代入できる
let sample = () =>{
let undefined = 1;
console.log(undefined);
}
sample();// 1
ローカル変数だとundefinedの値を変えることができちゃうみたいね
こういう可能性があるから
こういう可能性があるから
void 0
って使ってるのかな?nullとundefinedの違い
最後に、nullとどう違うんだろう?って思ったのでメモ
結果、値に何も設定しないと初期値がundefinedで、nullは意図的に入れないと存在しない値っぽい
undefinedはundefined型だし、nullはnull型
エンジニアの好みで値が空の時の処理が変わるみたいで、undefinedをそのまま使ったりnullを使ったり空文字を使ったり色々あるみたい
Memo:classのプロパティの初期値について書かれてるけど、なんで初期値をnullに書き換えたりするのかの考え方は参考になるかも
とりあえず初期値はundefinedが入って、nullは意図的に入れないと存在しないって認識でいればとりあえずはよさそう
おまけ:空文字や0はundefinedでもnullでもないよ
確認がてら書き出し
let test = "";
console.log(typeof test);// string型
test = 0;
console.log(typeof test);// number型
とりあえず、undefinedについて謎だった部分調べて備忘録
全部undefinedだね