ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の論理演算子とは何ですか?

JavaScript の論理演算子とは何ですか?

青灯夜游
青灯夜游オリジナル
2021-11-04 16:43:5010201ブラウズ

JavaScript の論理演算子は次のとおりです: 1. 論理 AND "&&" (両方のオペランドが true の場合にのみ true を返します)、2. 論理 OR "||" (両方のオペランドが true の場合は true、または 1 つ)それらのうち true の場合、true を返します; 3. 論理値が「!」ではない場合、オペランドの値をブール値に変換し、それを否定します。

JavaScript の論理演算子とは何ですか?

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript の論理演算子

論理演算子は通常、複数の式を結合するために使用されます。論理演算子の結果はブール値であり、結果は 2 つだけあり、true ではありません。false です。次の表に、JavaScript でサポートされている論理演算子のリストを示します。

Operator Name Example
&& 論理 AND xx && y は、x と y の両方が true の場合、それは true であることを意味します
|| 論理的 OR x || y は、x または y のいずれかが true の場合、それは true であることを意味します
! 論理的ではありません #x は、x が true でない場合は true であることを意味します

論理 AND 演算

論理 AND 演算 (&&) は AND ブール演算です。両方のオペランドが true の場合にのみ true を返し、それ以外の場合は false を返します。詳細な説明を表に示します。

#論理 AND 演算最初のオペランド2 番目のオペランド演算結果truetruetruetruefalsefalse#false##truefalse##falsefalse
##false
論理 AND は短絡論理の一種で、左側の式が false の場合、結果は短絡されて直接返され、上の式は権利は評価されなくなります。演算ロジックは次のとおりです。
ステップ 1: 最初のオペランド (左側の式) の値を計算します。

  • ステップ 2: 最初のオペランドの値を検出します。左側の式の値が false (null、unknown、NaN、0、""、false など) に変換可能な場合、操作は終了し、最初のオペランドの値が直接返されます。

  • ステップ 3: 最初のオペランドを true に変換できる場合は、2 番目のオペランド (右側の式) を評価します。

  • ステップ 4: 2 番目のオペランドの値を返します。

  • 例 1

次のコードでは、論理 AND 演算を使用して変数を検出し、初期化します。

var user;  //定义变量
(! user && console.log("没有赋值"));  //返回提示信息“没有赋值”
以下と同等:
var user;  //定义变量
if (! user){  //条件判断
    console.log("变量没有赋值");
}

変数 user の値が 0 の場合、または空の文字列などの false 値がブール値に変換された場合は、false になります。値が割り当てられている場合でも、プロンプトが表示されます。変数には値が割り当てられていません。したがって、設計時には、論理 AND の左側の式の戻り値が予測可能な値であることを確認する必要があります。

var user = 0;  //定义并初始化变量
(! user && console.log("变量没有赋值"));  //返回提示信息“变量没有赋值”

左側の式が false の場合、右側の式は直接スキップされるため、右側の式には代入、インクリメント、デクリメント、関数呼び出しなどの有効な演算を含めることはできません。後続の操作に影響を及ぼし、潜在的な影響をもたらします。

論理 OR 演算

論理 OR 演算|| はブール OR 演算です。両方のオペランドが true であるか、どちらか一方が true の場合は true を返し、それ以外の場合は false を返します。詳細を図に示します。

論理和演算

最初のオペランド2番目のオペランド演算結果truetruetruetruefalsetrue##truetrue##falsefalse

逻辑或也是一种短路逻辑,如果左侧表达式为 true,则直接短路返回结果,不再运算右侧表达式。运算逻辑如下:

  • 第 1 步:计算第一个操作数(左侧表达式)的值。

  • 第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 true,那么就会结束运算,直接返回第一个操作数的值。

  • 第 3 步:如果第一个操作数可以转换为 false,则计算第二个操作数(右侧表达式)的值。

  • 第 4 步:返回第二个操作数的值。

示例2

针对下面 4 个表达式:

var n = 3;
(n == 1) && console.log(1);
(n == 2) && console.log(2);
(n == 3) && console.log(3);
( ! n ) && console.log("null");

可以使用逻辑或对其进行合并:

var n = 3;
(n == 1) && console.log(1) || 
(n == 2) && console.log(2) || 
(n == 3) && console.log(3) || 
( ! n ) && console.log("null");

由于&&运算符的优先级高于||运算符的优先级,所以不必使用小括号进行分组。不过使用小括号分组后,代码更容易阅读。

var n = 3;
((n == 1) && console.log(1)) ||
((n == 2) && console.log(2)) ||
((n == 3) && console.log(3)) ||
(( ! n ) && console.log("null")) ||

逻辑与和逻辑或运算符具有以下 2 个特点:

  • 在逻辑运算过程中,临时把操作数转换为布尔值,然后根据布尔值决定下一步的操作,但是不会影响操作数的类型和最后返回结果。

  • 受控于第一个操作数,可能不会执行第二个操作数。

逻辑非运算

逻辑非运算!是布尔取反操作(NOT)。作为一元运算符,直接放在操作数之前,把操作数的值转换为布尔值,然后取反并返回。

示例3

下面列举一些特殊操作数的逻辑非运算返回值。

console.log( ! {} );  //如果操作数是对象,则返回false
console.log( ! 0 );  //如果操作数是0,则返回true
console.log( ! (n = 5));  //如果操作数是非零的任何数字,则返回false
console.log( ! null );  //如果操作数是null,则返回true
console.log( ! NaN );  //如果操作数是NaN,则返回true
console.log( ! Infinity );  //如果操作数是Infinity,则返回false
console.log( ! ( - Infinity ));  //如果操作数是-Infinity,则返回false
console.log( ! undefined );  //如果操作数是undefined,则返回true

示例4

如果对操作数执行两次逻辑非运算操作,就相当于把操作数转换为布尔值。

console.log( ! 0 );  //返回true
console.log( ! ! 0 );  //返回false

逻辑与和逻辑或运算的返回值不必是布尔值,但是逻辑非运算的返回值一定是布尔值。

【推荐学习:javascript高级教程

#false
##false

以上がJavaScript の論理演算子とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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