LoginSignup
0
0

More than 1 year has passed since last update.

【JavaScript】変数と参照の振り返り③ 等価性とtrue or falseについて

Last updated at Posted at 2021-10-09

はじめに

Udemyの【JS】ガチで学びたい人のためのJavaScriptメカニズムの講座の振り返りです。

前回の記事

目的

  • 変数についての理解を深める

本題

1.厳格な等価性と抽象的な等価性

厳格な等価性:a === b
抽象的な等価性: a == b

違いは型の比較をするかどうかにあります。

例①

 function printEquality(a,b){
// 厳格な等価性で比較 数値と文字列で不一致(false)
  console.log(a === b);
  // 抽象的な等価性 中身は一緒なので一致(ture)
  console.log(a == b);
 }

//文字列
 let a = "1";
//  数値
 let b = 1;
 printEquality(a,b);

例②

function printEquality(a,b){
// 厳格な等価性で比較 数値と文字列で不一致(false)
  console.log(a === b);
  // 抽象的な等価性 中身は一緒なので一致(ture)
  console.log(a == b);
 }

//文字列
 let a = "1";
//数値
 let b = 1;

//  下記の場合厳格な等価性ではfalse(trueは型がBoolean)
 let c = true;
 printEquality(b,c)
//  もし暗黙的な型変換から厳格な等価性をするとtrueになる
 console.log ( b === Number(c)); 

例③

 function printEquality(a,b){
// 厳格な等価性で比較 数値と文字列で不一致(false)
  console.log(a === b);
  // 抽象的な等価性 中身は一緒なので一致(ture)
  console.log(a == b);

// 下記の場合は厳格な等価性がfalse, 抽象的な等価性はtrue
// 文字列と数値なので厳格にはfalse
 let e = "";
 // Number("")とコンソールで出力すると0と出力されるので抽象的にはture
 let f = 0;
 printEquality(e,f);

//  nullやundifinedも0とみなしtrueで返す
// 基本的には厳格な等価性を使うべき

2.falseyとtruethy

falseになる値の例

false,null,undifined,NaN,0,0n,""

上記以外はすべてtureになる

// 0なのでfalseと等価
let a = 0;
console.log(Boolean(a));

let b = ""
console.log(Boolean(b));

let c = NaN;
console.log(Boolean(c));

 let d = 0n;
 console.log(Boolean(d));
 //  上記はすべてコンソールでfalseとして出力される

 let e = parseInt("");
 console.log(e);
//  上記はparseIntで整数として定義しているが空文字は数字に置き換えられないので、
// 出力結果はNan(Not a Number)となる
// よって下記の場合はfalseと出力される
 console.log(Boolean(e));

// 変数がfalseyかどうかif文で確認する
// もしaを下記のif文にかけて実行するとfalseなので"bye"と出力される
 if(a){
   console.log("hello");
 } else {
   console.log("bye");
 }

今日はここまで!

参考にさせて頂いた記事

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