PHP、JavaScriptにおける演算子==と===の違い イコールが3つの場合はより厳密な比較を行う
- 2018.10.14
- 2019.09.19
- Webスキル
よこのじ(@yokonoji_work)です。
PHP、JavaScriptをやっていると条件式の中で if (a === b) のような記述を見ることがあるかと思います。
これは厳密に比較を行うための比較演算子です。
等しいことを確認する==とは挙動が異なりますので、その内容を確認してみましょう。
比較演算子==(2つ)と===(3つ)の違い
PHPの比較演算子==と===
PHPのドキュメントを見てみますと、型の違いまで同じかどうか確認している点に違いがあります。
$a == $b 等しい 型の相互変換をした後で $a が $b に等しい時に TRUE
。$a === $b 等しい $a が $b に等しく、および同じ型である場合に TRUE
。$a != $b 等しくない 型の相互変換をした後で $a が $b に等しくない場合に TRUE
。$a !== $b 等しくない $a が $b と等しくないか、同じ型でない場合に TRUE
。
実際に数値と文字列で比較してみると、==ではtrueとなり、===ではfalseとなっています。より厳密な比較が必要な場合には===を使う必要がありそうです。
JavaScriptの比較演算子==と===
JavaScriptについても、型の違いを確認しているかどうかの違いがあります。
標準的な等価演算子 (== と !=) は 2 つのオペランドの比較に Abstract Equality Comparison Algorithm を使用します。オペランドの型が異なる場合は、比較を行う前にそれらを同じ型に変換しようとします。
厳密等価演算子 (=== と !==) は Strict Equality Comparison Algorithm を使用して、同一の型かどうかに関する比較も行います。
JavaScriptにおいても数値と文字列で比較すると、==ではtrueとなり、===ではfalseとなっています。
Rubyの比較演算子===
Rubyの場合、数値123と文字列”123″を==で比較した場合でもfalseとなるため、比較する際に==と===を使い分けることはありません。
Rubyにおける===はPHPやJavaScriptとは使い方が異なり、case文での比較に用いられます。
- 前の記事
プラグインGoogle XML Sitemapsの設定とGoogle Search Console(サーチコンソール)との連携 2018.10.13
- 次の記事
各プログラミング言語のコメントの書き方一覧!わかりやすいコメントを書きたいものだ 2018.10.14