以下で判定可能
var nullOrUndefined = (val) => {
// ==演算子を使用する。
// ===にすると厳密な比較が行われ、undefinedの場合falseになる
if (val == null) {
console.log("null or undefined");
} else {
console.log(val);
}
};
var a;
nullOrUndefined(a);
// "null or undefined"
var b = null;
nullOrUndefined(b);
// "null or undefined"
var c = "hoge";
nullOrUndefined(c);
// "hoge"
コーディング規約によっては==の使用が禁止されていて
===しか使用できないことがある(体験談…)
その場合の代替案をいくつか調べてみた。
###1.自分でメソッドを作る
無ければ作ればいいじゃないの精神。
var isNullOrUndefined = (val) => {
if (val === null) return true;
if(val === undefined) return true;
return false;
};
###2.!hogeによる判定
0、false、空文字の場合もtrueと判定されることを理解して使用する。
if (!hoge) {
//null, undefined, 0, 空文字(''), falseの場合trueとなりこのブロックに入る
}
自分は判定対象の値に0が入っていることもあり1の方法を使用していたが、
2つ以上の値を判定する場合、記述数が多くなりモヤモヤしていた。
// もしも変数名が長いと手に負えない
if (isNullOrUndefined(a) && isNullOrUndefined(b)){}
2つ以上の値のチェックが頻繁に必要な場合、可変長で引数を受け取るメソッドを作成しておいても良いのかもしれない。
var isNullOrUndefinedAll = (...args) => {
for (let val of args) {
if (val !== null && val !== undefined) return false;
}
return true;
};