Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@TOMARU4400

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

More than 1 year has passed since last update.

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

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

「==」

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

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

「===」

型と値を比較します。

sample.js

   var num = 123;
   var str = '123';

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

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

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

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

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

型の自動変換表

  演算   変換
文字列と数値 文字列に変換
数値と論理 数値に変換
文字列と論理 文字列に変換
1
Help us understand the problem. What is going on with this article?
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
TOMARU4400
知識を定着させる為、学び直した事などを記事に残しておこうと思います。誰かのお役に立てれば幸いです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?