ブール演算子
概要
ブール演算子は、式をブール値に変換するために使用されます。演算子は合計 4 つあります。
- 否定演算子:
!
- そして演算子:
&&
- OR 演算子:
||
- 三項演算子:
?:
否定演算子 (!)
否定演算子は感嘆符であり、ブール値をその反対の値に変更するために使用されます。つまり、「true」は「false」になり、「false」は「true」になります。
!true // false
!false // true
非ブール値の場合、否定演算子はそれらをブール値に変換します。次の 6 つの値は 'true' に否定され、その他の値はすべて 'false' として記憶されます。
- 「未定義」
- 「ヌル」
- 「偽」
0
- 'NaN'
- 空の文字列 (
''
)
!unknown // true
!null // true
!0 // 真
!NaN // true
!"" // 真実
!54 // 偽
!'こんにちは' // false
![] // 間違い
!{} // 間違い
上記のコードでは、値の型に関係なく、反転演算の後はブール値になります。
値に対して 2 つの連続した反転演算を実行する場合、それは対応するブール値に変換することと同等であり、Boolean
関数と同じ効果があります。これは一般的に使用される型変換方法です。
!!x
// と同等
ブール値(x)
上記のコードでは、値 x
がどのようなタイプであっても、2 回の反転演算の後、それは Boolean
関数の結果と同じブール値になります。したがって、2 回否定することは、値をブール値に変換する簡単な方法です。
アンド演算子 (&&)
また、演算子 (&&
) は複数の式を評価するためによく使用されます。
その操作規則は次のとおりです。最初の演算子のブール値が「true」の場合、2 番目の演算子の値が返されます (最初の演算子のブール値が 'true' の場合、これは値であり、ブール値ではないことに注意してください)。 false
の場合、最初の演算子の値が直接返され、2 番目の演算子は評価されなくなります。
't' && '' // ""
't' && 'f' // "f"
't' && (1 + 2) // 3
'' && 'f' // ""
'' && '' // ""
var x = 1;
(1 - 1) && (x += 1) // 0
× // 1
上記のコードの最後の例では、AND 演算子の最初の演算子のブール値が false
であるため、2 番目の演算子を評価せずにその値 0
が直接返されるため、変数 x
の値は次のようになります。変わっていない。
2 番目の演算子をスキップするこのメカニズムは「ショートサーキット」と呼ばれます。プログラマの中には、これを使用して「if」構造を置き換えることを好む人もいます。たとえば、次のコードは「if」構造を持ち、AND 演算子を使用して書き換えることができます。
if (i) {
doSomething();
}
// と同等
私 && doSomething();
上記の 2 つのコードの記述方法は同等ですが、後者の方法は目的がわかりにくく、デバッグが容易ではないため、注意して使用することをお勧めします。
また、演算子は複数の演算子と組み合わせて使用できます。この場合、ブール値が「false」である最初の式の値が返されます。すべての式が「true」と評価された場合、最後の式の値が返されます。
true && 'foo' && '' && 4 && 'foo' && true
// ''
1 && 2 && 3
// 3
上記のコードの例 1 では、ブール値 false
を持つ最初の式が 3 番目の式であるため、空の文字列が取得されます。例 2 では、すべての式のブール値が true
であるため、最後の式の値 3
が返されます。
または演算子 (||)
OR 演算子 (||
) は、複数の式を評価するためにも使用されます。その操作規則は次のとおりです。最初の演算子のブール値が「true」の場合、最初の演算子の値が返され、最初の演算子のブール値が「false」の場合、2 番目の演算子は評価されません。 ` の場合、2 番目の演算子の値が返されます。
't' || '' // "t"
't' || 'f' // "t"
'' || 'f' // "f"
'' || '' // ""
短絡規則もこの演算子に適用されます。
var x = 1;
true || (x = 2) // true
× // 1
上記のコードでは、OR 演算子の最初の演算子が「true」であるため、2 番目の演算子を実行せずに直接「true」を返します。したがって、「x」の値は変更されていません。最初の式の値のみによって 2 番目の式を実行するかどうかを制御するこのメカニズムは、「ショートカット」と呼ばれます。
OR 演算子は複数回使用でき、その場合、ブール値が「true」である最初の式の値が返されます。すべての式が false の場合、最後の式の値が返されます。
偽 0 || 'foo' ||
// 4
偽 0 || ''
// ''
上記のコードの例 1 では、ブール値「true」を持つ最初の式が 4 番目の式であるため、値 4 が取得されます。 2 番目の例では、すべての式のブール値が「false」であるため、最後の式の値が返されます。
OR 演算子は、変数のデフォルト値を設定するためによく使用されます。
関数 saveText(テキスト) {
テキスト = テキスト || '';
// ...
}
// または次のように記述されます
saveText(this.text || '')
上記のコードは、関数の呼び出し時にパラメーターが指定されていない場合、パラメーターはデフォルトで空の文字列に設定されることを示しています。
三項条件演算子 (?:)
3 項条件演算子は、3 つの式を区切る疑問符 (?) とコロン (:) で構成されます。これは、JavaScript 言語で 3 つの演算子を必要とする唯一の演算子です。最初の式のブール値が「true」の場合は 2 番目の式の値が返され、それ以外の場合は 3 番目の式の値が返されます。
't' ? 'こんにちは' : '世界' // "こんにちは"
0 ? 'こんにちは' : '世界' // "世界"
上記コードの「t」と「0」のブール値はそれぞれ「true」と「false」なので、2番目と3番目の式の値がそれぞれ返されます。
一般に、3 項の条件式は、if...else ステートメントと同じ表現効果を持ちます。前者が表現できれば、後者も表現できます。ただし、この 2 つには大きな違いがあります。「if...else」はステートメントであり、戻り値はありません。一方、三項条件式は式であり、戻り値があります。したがって、戻り値が必要な場合は、「if..else」ではなく、3 項の条件式のみを使用できます。
console.log(true ? 'T' : 'F');
上記のコードでは、console.log
メソッドのパラメータは式である必要があります。この場合、3 項の条件式のみを使用できます。 「if...else」ステートメントを使用したい場合は、コード全体を変更する必要があります。
作者: wangdoc
アドレス: https://wangdoc.com/
ライセンス: クリエイティブ・コモンズ 3.0