JavaScript の論理 OR (または||
) 演算子は、左辺がtrueの場合は左辺を返し、それ以外の場合はデフォルトで右辺を返す演算子です。
これは、両方の論理ステートメントをテストするために使用できること、および左側のオペランドがfalsy
である場合に右側のオペランドを返すために使用できることを意味します。
それがどのように機能するかを見てみましょう。
先に進む前に、最初にfalsy
の意味を理解しましょう。漠然とした表現のように見えるかもしれませんが、実際には非常に具体的な定義があります。次の値は、JavaScript falsy
です。
false
0
または-0
または0n
any
文字列、つまり""
null
undefined
NaN
同様に、 truthy
は単にfalsy
ではないことを意味します。
falsy
は0
と""
を意味する可能性があるため、デフォルト値の設定には不適切な場合があります。
たとえば、一部のシナリオでは、値が実際に0
であり、それを表示したい場合、 ||
では表示できません。オペレーター。このような場合は、null 結合演算子を検討することをお勧めします。
前述のように、 ||
operator には、JavaScript の 2 つの主要な機能があります。最も一般的には、論理if..else
ステートメントで見つかります。 truthy
では、オペランドの 1 つ以上が true の場合に true を返しますが、 true の場合は最初の値を返すためにも使用されtruthy
。または、右側にデフォルトが設定されます。そうでない場合はオペランド。
||
実際に値を返すため、これらの両方の方法で機能します。
|| 見たことがあるでしょう||
if
やelse
などの論理ステートメントで最も一般的に使用されます。これらの場合、通常は論理ステートメントをテストしているので、 ||
オペランドの 1 つ以上がtruthy
の場合、 true
を返します。
以下で起こっているのは||
です。演算子は値を返し、 if
ステートメントはそれをtrue
またはfalse
に変換します
let x = 100; // This returns true, since both of these statements are correct. if(x > 5 || x > 10) { // ... } // Since both "1" and "2" can be converted to true, this also returns true in this context. if("1" || "2") { // ... } // Since both "" and null are falsy, they are converted to false, and as such this returns false. if("" || null) { // ... }
これは||
を使用する主な方法の 1 つです。コード内で使用されますが、 truthy
の程度に基づいて値をfalsy
ためにもよく使用されます。
論理ステートメント以外の別の例を見てみましょう。前述のとおり、 ||
truthy
の場合は左辺を返しますが、それ以外の場合は右辺を返します。
少しややこしいので、いくつか例を見てみましょう。
// Is set to 1, since the first operand is falsy let x = false || 1; // Is set to hello, since "hello" is truthy let y = "hello" || true;
上記の例では、 x
の左辺がfalse
に設定されているため、 x
は 1 になります。同様に、 y
"hello"
はfalsy
ではないため、 y
の値は"hello"
になります。この機能は、論理ステートメントやif..else
ステートメントでのアプリケーションとは異なりますが、多くの状況で役立ちます。
興味深いことに、最後に指定された項目がfalsy
であっても、JavaScript はそれを返します。
例えば:
// Is set to null since false is falsy let x = false || null; // Is set to false since 0 is falsy let y = 0 || false;
||
をチェーンすることができます。 JavaScript の演算子。論理ステートメントを (if. if..else
句で) チェーンする場合、チェーンされた項目がtruthy
の場合、ステートメントは true を返します。
// This works since both "1" and true are truthy if("1" || true || false) { // ... console.log('this works') } // This doesn't work since all values are falsy if(false || null || undefined) { console.log('this does not work'); }
||
を使用する場合論理ステートメントの外側にチェーンされている場合、最初に見つかったtruthy
の値を使用するか、デフォルトで最終値を使用します。たとえば、以下では、 x
は3
に等しく、 y
はtrue
、 z
は{}
です。なぜz
が{}
なのか疑問に思っているなら、それはfalsy
でないものはtruthy
であるからです。つまり、オブジェクトがtruthy
であることを意味します!
// x is set to 3 let x = false || 0 || 3; // y is set to true let y = false || true || 3; // z is set to {} let z = {} || [] || x;
||
演算子は、論理ステートメントで頻繁に使用されます。また、 falsy
でない値が見つかった場合は、その値にデフォルト設定されます。これは、JavaScript を理解するためのコアとなる柔軟な演算子です。別の同様の演算子に興味がある場合は、ヌル合体演算子についても読みたいと思うかもしれません。