プログラミング、カメラを中心になんでも書く雑記ブログです。
*
はじめに!!みなさんお疲れ様です。ぴーすけと申します。今回はjavascriptで変数がundefinedかどうかを確かめるときにかっこいいと感じた方法を解説いたします。
*
そもそもundefinedとは!!javascriptにおいて初期化のされていない変数にはundefinedという値が入っています。こんな場合です。
var test; //undefined
初期化のされていない変数を使ってメソッドを使おうとするとエラーになってしまうので、変数の値があるかどうかを確かめてから処理を行わなくてはいけない場合があります。
*
こんな方法があります!!よくやる方法はこちら
var test;
if (typeof test === "undefined") {
console.log("testはundefinedです。");
} else {
console.log("testはundefinedではありません。");
}
そして、かっこいい方法はこちら
コメントでご指摘をいただきまして調べ直しましたところ、以下の方法はそのまま使うことはできないようです。
調べてみたところ、そもそもundefinedという変数はグローバルスコープに元から宣言されていて、ES5ではその変数を上書きすることは禁止されていますので、以下のようにundefinedという変数に値を書き込もうとするのはできないようです。
var test = 1;//1
var undefined;//undefined
if (test === undefined) {
console.log("testはundefinedです。");
} else {
console.log("testはundefinedではありません。");
}
初期化していない変数にはundefinedが入っているという仕様を逆手にとって、わざと初期化されていない変数undefined(中身もundefined)を宣言してその変数と確かめたい変数を比べるというやり方。考え方がスマートでかっこいい。
jsファイルをミニファイした場合には、長い変数名が1文字とかに変わるので、単純に文字列と比べるよりもファイルが軽くなるらしいです。
*
まとめ!!コーディングは一つの答えを出すまでに色々な書き方ができます。答えは一つではないので、状況次第で書き方を変えるべきだと思います。状況によって書き換えるためにも色々な書き方や考え方やアプローチなどを学んでおく必要があると思います。
*
コメントモダンブラウザだと変数名undefinedが宣言できない仕様になってますのでその技は使えませんよ
ご指摘ありがとうございます!!
調べ直して訂正したいと思います!!