ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の論理 OR (||) 演算子は非ブール オペランドを処理できますか?

JavaScript の論理 OR (||) 演算子は非ブール オペランドを処理できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 11:50:021043ブラウズ

Can the Logical OR (||) Operator in JavaScript Handle Non-Boolean Operands?

論理 OR (||) 演算子と非ブール型オペランド

JavaScript では、論理 OR 演算子 (||) が一般的に使用されますブール式を評価します。ただし、非ブール値オペランドにも適用され、予期しない結果が生じる可能性があります。

次のコードを考えてみましょう。

<code class="javascript">var $time = Date.now || function() {
  return +new Date;
};</code>

この例では、||演算子は、関数を $time 変数に割り当てるために使用されます。この式は、Date.now が存在する場合 (つまり、null または未定義でない場合) はその結果として評価され、そうでない場合は、現在のタイムスタンプを返す匿名関数を実行します。

この動作の理由は次のとおりです。 || の二次的な役割演算子を「デフォルト」演算子として使用します。両方のオペランドが非ブール値の場合、左側のオペランドが真 (null、未定義、空の文字列、または 0 以外) の場合は左側のオペランドを返し、左側のオペランドが偽の場合は右側のオペランドを返します。

指定されたコードでは、Date.now は真の値であるため、左側のオペランドが返されます。これは、元の Date.now 関数です。ただし、Date.now が利用できない場合 (古いブラウザなど)、代わりに匿名関数である右側のオペランドが実行されます。

この || の使用法は、演算子を使用すると、開発者はデフォルト値またはフォールバック動作を簡潔な方法で指定できます。たとえば、次のコードは v 変数に値を割り当てますが、v が定義されていない場合は値を 10 に設定します。

<code class="javascript">value = v || 10;</code>

同様に、次のコードは null 許容オブジェクトのプロパティへのアクセスを防ぎます。 object:

<code class="javascript">var value = p &amp;&amp; p.name;</code>

結論として、 || JavaScript の (論理 OR) 演算子は、非ブール オペランドでも使用でき、真の場合は左側のオペランドを評価し、そうでない場合は右側のオペランドを評価します。この動作は、デフォルト値を指定したり、null セーフ コードを作成したりする場合に役立ちます。

以上がJavaScript の論理 OR (||) 演算子は非ブール オペランドを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。