コンテンツにスキップ

Top

JavaScriptで 0 と ""(空文字) が一致!?

以下のコード。どうなると思います?

var hoge = 0;
if (hoge == "") {
    console.log("match");
} else {
    console.log("unmatch");
}

なんと、matchになるんですよ。

== だと 0 も "" も一緒なんですね。

unmacthにしたいのであれば === にしないといけません。

var hoge = 0;
if (hoge === "") {
    console.log("match");
} else {
    console.log("unmatch");
}

知らずに普通にバグを出してしまいました。

null と undefined

null と undefined も 0と""の関係と一緒で、 == だと同じ扱いになります。

var hoge = undefined;
if (hoge == null) {
    console.log("match");
} else {
    console.log("unmatch");
}

の結果は match です。

もちろん、 === にすれば unmatch です。

以上!