PORTFOLIO & WEB DESIGN MEMORANDOM BLOG   
PORTFOLIO & WEB DESIGN MEMORANDOM BLOG   

【JAVASCRIPT】JavaScript「truthy」と「falsy」について

JavaScriptでは、値が条件文(例えば、if 文)で真または偽として評価される場合、その値は「truthy」または「falsy」と呼ばれます。

Falsy(偽と評価される値)

次の値は、JavaScriptで常に偽(falsy)として評価されます。

false
0(ゼロ)
-0(マイナスゼロ)
0n(BigIntのゼロ)
“”(空文字列)
null
undefined
NaN(Not-a-Number)

これらの値はすべて条件文で偽と評価されます。

  1. if (false) {
  2.   console.log("This will not be logged");
  3. }
  4. if (0) {
  5.   console.log("This will not be logged");
  6. }
  7. if ("") {
  8.   console.log("This will not be logged");
  9. }

Truthy(真と評価される値)

上記以外のすべての値は、JavaScriptでは真(truthy)として評価されます。

true
数値(0および-0以外のすべての数値)
文字列(空文字列以外のすべての文字列)
配列(空配列も含む)
オブジェクト(空オブジェクトも含む)
関数
Infinityおよび-Infinity

これらの値はすべて条件文で真と評価されます。

  1. if (true) {
  2.   console.log("This will be logged");
  3. }
  4. if (42) {
  5.   console.log("This will be logged");
  6. }
  7. if ("hello") {
  8.   console.log("This will be logged");
  9. }
  10. if ([]) {
  11.   console.log("This will be logged");
  12. }
  13. if ({}) {
  14.   console.log("This will be logged");
  15. }

具体例

下記の例では、aは0なのでfalsyと評価され、bは非空の文字列なのでtruthyと評価されます。

  1. let a = 0;
  2. if (a) {
  3.   console.log("a is truthy");
  4. } else {
  5.   console.log("a is falsy"); // ここが実行される
  6. }
  7. let b = "hello";
  8. if (b) {
  9.   console.log("b is truthy"); // ここが実行される
  10. } else {
  11.   console.log("b is falsy");
  12. }

論理演算子におけるtruthyとfalsy

JavaScriptの論理演算子(&&, ||, !)は、truthyとfalsyの概念に基づいて動作します。これらの演算子は、条件文の評価や短絡評価(ショートサーキット評価)でよく使われます。

&& (論理AND)

&&演算子は、両方のオペランドがtruthyである場合にのみtruthyを返します。最初にfalsyな値が見つかった時点で、その値を返し、評価を終了します(短絡評価)。

  1. console.log(true && "hello"); // "hello" が返される(両方truthy)
  2. console.log(false && "hello"); // false が返される(最初がfalsy)
  3. console.log("world" && "hello"); // "hello" が返される(両方truthy)
  4. console.log(0 && "hello"); // 0 が返される(最初がfalsy)

|| (論理OR)

||演算子は、最初にtruthyな値が見つかった時点でその値を返し、評価を終了します。両方のオペランドがfalsyである場合は最後のオペランドを返します。

  1. console.log(true || "hello"); // true が返される(最初がtruthy)
  2. console.log(false || "hello"); // "hello" が返される(最初がfalsy、次がtruthy)
  3. console.log("world" || "hello"); // "world" が返される(最初がtruthy)
  4. console.log(0 || "hello"); // "hello" が返される(最初がfalsy、次がtruthy)
  5. console.log(null || undefined); // undefined が返される(両方falsy)

! (論理NOT)

!演算子は、オペランドのtruthyまたはfalsyの逆のブール値を返します。truthyな値が与えられた場合はfalseを、falsyな値が与えられた場合はtrueを返します。

  1. console.log(!true); // false が返される
  2. console.log(!false); // true が返される
  3. console.log(!"hello"); // false が返される("hello"はtruthy)
  4. console.log(!0); // true が返される(0はfalsy)
  5. console.log(!null); // true が返される(nullはfalsy)

短絡評価(ショートサーキット評価)

論理演算子の短絡評価の例をいくつか示します。

&&の短絡評価

&&演算子は最初にfalsyな値を見つけた時点で評価を終了します。

  1. let a = false && (console.log("This will not be logged"), true);
  2. console.log(a); // false が返される
  3. let b = true && (console.log("This will be logged"), true);
  4. console.log(b); // "This will be logged"が表示され、bにはtrueが入る

||の短絡評価

||演算子は最初にtruthyな値を見つけた時点で評価を終了します。

  1. let c = true || (console.log("This will not be logged"), false);
  2. console.log(c); // true が返される
  3. let d = false || (console.log("This will be logged"), true);
  4. console.log(d); // "This will be logged"が表示され、dにはtrueが入る

まとめ

&&演算子は、両方のオペランドがtruthyである場合にのみtruthyを返し、最初のfalsyな値を返す。
||演算子は、最初のtruthyな値を返し、両方がfalsyである場合は最後のオペランドを返す。
!演算子は、オペランドのtruthyまたはfalsyの逆のブール値を返す。
短絡評価により、評価の途中で結果が確定すると、残りの評価は行われない。

MILMONA   MILMONA   MILMONA   MILMONA   MILMONA   
MILMONA   MILMONA   MILMONA   MILMONA   MILMONA