JavaScript

【JavaScriptの判定】null、undefined、==、===の違い

2020年8月19日

JavaScriptの判定方法

JavaScriptには、様々な判定方法があります。例えば「if (値)」と「if (値 != null)」、「==」と「===」など。この違いを理解せず使用していると、思わぬバグを作りこんでしまう危険性があります。

本記事では、JavaScritpの判定方法について紹介しています。

「if (値)」と「if (値 != null)」の違い

if (値)による判定

if (値)の判定では、以下の例の通り「null」「undefined」「空文字」「0」が偽(false)です。「null」「undefined」「空文字」「0」以外を処理したい場合は、この判定式を使用します。

var value_undefined;
var value_null = null;
var value_empty = "";
var value_zero = 0;
var value_zero_str = "0";


if (value_undefined) {} /* false */
if (value_null) {}      /* false */
if (value_empty) {}     /* false */
if (value_zero) {}      /* false */
if (value_zero_str) {}  /* true */

ここで要注意なのが数値の「0」も偽(false)になるという点です。

スポンサーリンク

if (値 != null)による判定

if (値 != null)の判定では、以下の例の通り「null」「undefined」が偽(false)です。「null」と「undefined」以外を処理したい場合は、この判定式を使用します。

var value_undefined;
var value_null = null;
var value_empty = "";
var value_zero = 0;
var value_zero_str = "0";

if (value_undefined != null) {} /* false */
if (value_null != null) {}      /* false */
if (value_empty != null) {}     /* true */
if (value_zero != null) {}      /* true */
if (value_zero_str != null) {}  /* true */

もし「null」と「undefined」、空文字以外を処理したい場合は if (値 != null && 値 != "") で空文字の条件式を追加しましょう。

また「undefined」のみを判定したい場合は、if (値 != undefined) で判定することもできます。

「==」と「===」の違い

等価演算子(==)

等価演算子は、変数の型に関わらず値で比較します。

例えば、次のように「数値の1」と「文字列の1」を等価演算子(==)で比較すると、結果は真(true)です。

var data_int = 1;
var data_string = "1";

if (data_int == data_string) {} /* true */

厳密等価演算子(===)

厳密等価演算子は、変数の型まで見て値を比較します。

例えば、次のように「数値の1」と「文字列の1」を厳密等価演算子(===)で比較すると、結果は偽(false)です。

var data_int = 1;
var data_string = "1";

if (data_int === data_string) {} /* false */

helpful