💭

【再帰】三項演算子 ?:

2024/10/09に公開

基本構文

条件 ? 真の場合の値 : 偽の場合の値

動作の仕組み

条件が true の場合、? の後の値が返される
条件が false の場合、: の後の値が返される

prevValue === 0 ? 1 : 0 の解釈

  • prevValue === 0 が条件部分です。
  • もし prevValue が 0 と等しければ(条件が true)、? の後の 1 が返されます。
  • そうでなければ(条件が false、つまり prevValue が 0 でない場合)、: の後の 0 が返されます。

この式は以下の if-else 文と同等

let newValue;
if (prevValue === 0) {
    newValue = 1;
} else {
    newValue = 0;
}

使用例

prevValue が 0 の場合、式は 1 を返します(0 を 1 に変換)。
prevValue が 1 の場合、式は 0 を返します(1 を 0 に変換)。

この三項演算子の使用は、0 と 1 を交互に入れ替える(反転させる)ための簡潔な方法。

// 三項演算子の基本構文
// 条件 ? 真の場合の値 : 偽の場合の値

// 例1: 数値が正か負かを判断
let number = 5;
let result = number > 0 ? "正の数" : "負の数または0";
console.log(result); // 出力: "正の数"

// 例2: 偶数か奇数かを判断
let isEven = (num: number) => num % 2 === 0 ? "偶数" : "奇数";
console.log(isEven(4)); // 出力: "偶数"
console.log(isEven(7)); // 出力: "奇数"

// 例3: 値の反転(0と1の入れ替え)
let invertValue = (val: number) => val === 0 ? 1 : 0;
console.log(invertValue(0)); // 出力: 1
console.log(invertValue(1)); // 出力: 0

// 元のコードの該当部分
let prevValue = 0; // または 1
let newValue = prevValue === 0 ? 1 : 0;
console.log(newValue); // prevValueが0の場合は1、1の場合は0を出力

Discussion