ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の論理 OR (||) 演算子は非ブール オペランドを処理できますか?
論理 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 && p.name;</code>
結論として、 || JavaScript の (論理 OR) 演算子は、非ブール オペランドでも使用でき、真の場合は左側のオペランドを評価し、そうでない場合は右側のオペランドを評価します。この動作は、デフォルト値を指定したり、null セーフ コードを作成したりする場合に役立ちます。
以上がJavaScript の論理 OR (||) 演算子は非ブール オペランドを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。