0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こんにちは。
JavaScriptの等価演算子には ===== の2つがあります。
この記事では、===== の違いと、それぞれどのような場面で使うべきかについてまとめます。

=== は型と値の両方を比較する

===(厳密等価演算子)は、型変換を行いません。左右のオペランドの型が異なる場合、その時点で false を返します。

console.log(1 === 1);     // true
console.log(1 === "1");   // false
console.log(true === 1);  // false

1"1" は、値としては「1」に見えますが、型が numberstring で異なるため false です。

== は型変換してから比較する

==(等価演算子)は、左右のオペランドの型が異なる場合に型変換を行ってから比較します。

console.log(1 == "1");        // true
console.log(true == 1);       // true
console.log(null == undefined); // true

1 == "1" では、文字列 "1" が数値に変換されてから比較されるため、true になります。
null == undefinedtrue になるのも、== の型変換ルールによるものです。

予期しない結果になる可能性がある

== を使った値の比較では、予期しない動作が起こる可能性があります。
例えば以下のような場合です。

console.log("" == 0);       // true
console.log("0" == false);  // true
console.log("" == false);   // true
console.log([] == false);   // true
console.log([] == 0);       // true

空文字列 "" は数値に変換すると 0 になるため、"" == 0true です。
"0" は数値に変換すると 0false も数値に変換すると 0 なので、"0" == falsetrue です。

一方で、=== ならこれらはすべて false になります。

console.log("" === 0);       // false
console.log("0" === false);  // false
console.log("" === false);   // false
console.log([] === false);   // false
console.log([] === 0);       // false

型が違う時点で false と判定されるため、型変換による予想外の true が起きません。

どう使い分ける?

基本は === を使う

基本的には === を使うべきとされています。
=== を使うと、「型が同じ、かつ値も同じ」場合だけ true になります。先述のような型変換によって起きる挙動を意識していなくても使いやすいです。

x == null の時は == を使用してもよさそう

null == undefinedtrue になる性質を利用して、nullundefined をまとめて判定するコードを書きたい場合は、x == null という記法が短くて便利です。

if (value == null) {
  // value が null または undefined の場合
}

まとめ

  • === は型変換せず、型と値の両方が一致するときだけ true
  • == は型が異なると型変換してから比較する
  • 基本的には === を使うのがよい
  • nullundefined をまとめて判定したい時は x == nullという書き方が便利

お読みいただきありがとうございました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?