【JavaScript】厳密等価演算子(===, イコール3つ)と等価演算子(==, イコール2つ)の違い

JavaScript

厳密等価演算子とは

厳密等価演算子(===)とはイコール3つで表現される比較演算子です。
2つのオペランド(被演算子, 演算対象の変数のこと)が等しければtrue、等しくなければfalseを返します。

厳密等価演算子はオペランドの値だけでなく型も等しいかチェックします。
ですので、型が異なるオペランドを厳密等価演算子で比較した場合、結果は常にfalseになります。

以下は厳密等価演算子による比較結果の例です。

// trueの例
console.log('hello' === 'hello'); // true
console.log(undefined === undefined) // true
console.log(null === null) // true

// falseの例
console.log(1 === '1') // false
console.log(1 === true) // false
console.log(0 === false); // false
console.log(0 === '') // false
console.log(null === undefined) // false

等価演算子とは

等価演算子(==)とはイコール2つで表現される比較演算子です。
2つのオペランド(被演算子, 演算対象の変数のこと)が等しければtrue、等しくなければfalseを返します。

厳密等価演算子とは異なり、オペランドの型が異なる場合は型の変換を試みてから比較をします。
ですので、厳密等価演算子でfalseだったものが等価演算子でtrueになるケースも存在します。

以下は等価演算子による比較結果の例です。

// 厳密等価演算子でtrue、等価演算子でtrueの例
console.log('hello' == 'hello'); // true
console.log(undefined == undefined) // true
console.log(null == null) // true

// 厳密等価演算子でfalse、等価演算子でtrueの例
console.log(1 == '1') // true
console.log(1 == true) // true
console.log(0 == false) // true
console.log(0 == '') // true
console.log(null == undefined) // true(等価演算子ではnullとundefinedは同じものとして扱われる)

// 厳密等価演算子でfalse、等価演算子でfalseの例
console.log(10 == true) // false
console.log(0 == null) // false
console.log(false == null) // false
console.log('' == null) // false
console.log(0 == undefined) // false
console.log(false == undefined) // false
console.log('' == undefined) // false

さいごに

Twitter(@nishina555)やってます。フォローしてもらえるとうれしいです!

参考