JS 初期値 空判定について
undefined
var hoge;
console.log(hoge); //->undefined
単にvar 変数としただけでは、undefined、プリミティブ値となる。
プリミティブ値は、プロパティ(オブジェクト内にある情報。{name,idなど})やメソッド(JSではオブジェクトの結びつけられた関数)を持たない数字(1,2,3…)、文字列(“aa","hello")、論理値(true/false)のことを言う。
初期値をどうするのか(空判定)
ふと疑問に思った。その辺り理解できないなと。
undefined、null、""、[]、{}、0…。初期値、空判定にどれをどう使い分ければ良いのか。
初期値をどう選ぶのかは、扱うデータ型によるところが大きいと思う。
文字列型なら""、数値型ならnullや0、配列型なら[]、論理型ならfalseといった具合になる。
空判定をどうするのかについて、つまりは、初期値をどうするか扱うデータによって区別できてないことが原因に思える。
例えば、扱うデータが金額だとしたら、数値型になるので、初期値はnullや0になる。この場合の空判定をどうするかは、nullや0になるのだろう。
実際、現場ごとにどのように扱っているのか再度確認した方が良さそうだ。
var hoge = null;
var hogehoge;
var hoge_num = 1*0;
//null
if(hoge == null || hoge == 0){
console.log(hoge);
}else{
console.log("false")
}
//undefined
if(hogehoge == null || hogehoge == 0){
console.log(hogehoge);
}else{
console.log("false")
}
//0
if(hoge_num == null || hoge_num == 0){
console.log(hoge_num);
}else{
console.log("false")
}
参照
・undefined
・typeof
・[JavaScript] null とか undefined とか 0 とか 空文字(") とか false とかの判定について