Help us understand the problem. What is going on with this article?

Javascript における「==」と「===」の違い

Javascript における「==」と「===」の違い

どちらも「左辺と右辺が等しいか?」を比較するのですが、決定的な違いは**データ型を比較するかしないかの違いです。

「==」

値のみでデータ型は比較しない。

(厳密には異なり、詳細は後述にて補足致します。)

「===」

型と値を比較します。

sample.js
   var num = 123;
   var str = '123';

   document.write(num == str);  // true
   document.write(num === str); // false

「数値型の123」と「文字列型の123」を比較した場合、データ型まで比較を行う「===」はfalse、行わない「==」はtrueとなります。
比較において「==」と「===」のどちらかを使うべきですが、基本的には「===」を使います。
その理由として
型の比較を行わない「==」はバグの原因になりやすいなど理由は多々あるようです。
ですから変数の型を意識する意味を含めて、「===」を使ってプログラムを書いく方が良さそうです。

「==」についての補足です。

前述で「==」は型の比較をしないと言いましたが、厳密に言うと
「型を特定の決まった方に合わせるように変換し、そのあと比較する。」
というニュアンスが正しいです。

例えば文字列型と数値型を「==」で比較した場合は、数値型を文字列型に自動で変換した後に、比較を行います。これはjavascriptで定義されている一定の法則で行われています。

型の自動変換表

  演算   変換
文字列と数値 文字列に変換
数値と論理 数値に変換
文字列と論理 文字列に変換
TOMARU4400
知識を定着させる為、学び直した事などを記事に残しておこうと思います。誰かのお役に立てれば幸いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした