>웹 프론트엔드 >JS 튜토리얼 >JavaScript의 논리 연산자는 무엇입니까?

JavaScript의 논리 연산자는 무엇입니까?

青灯夜游
青灯夜游원래의
2021-11-04 16:43:5010231검색

JavaScript의 논리 연산자는 다음과 같습니다. 1. 두 피연산자가 모두 true인 경우에만 true를 반환하는 논리 AND "&&" 2. 두 피연산자가 모두 true인 경우 또는 둘 중 하나가 true인 경우 논리 OR "||" 3. "!"가 아닌 논리적이며 피연산자의 값을 부울 값으로 변환하고 이를 부정합니다.

JavaScript의 논리 연산자는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

JavaScript의 논리 연산자

논리 연산자는 일반적으로 여러 표현식을 결합하는 데 사용됩니다. 논리 연산자의 결과는 true 또는 false의 두 가지 결과만 가질 수 있는 부울 값입니다. 다음 표에는 JavaScript에서 지원되는 논리 연산자가 나열되어 있습니다.

Operator Name Example
&& Logical AND x && y는 x와 y가 모두 true인 경우 true임을 의미합니다.
|| 논리적 OR x||y는 x 또는 y가 참이면 참이라는 의미입니다
! 논리적 아님 !x는 x가 참이 아니면 의미합니다. 맞습니다

논리 AND 연산

논리 AND 연산(&&)은 AND 부울 연산입니다. 두 피연산자가 모두 true인 경우에만 true를 반환하고, 그렇지 않으면 false를 반환합니다. 자세한 설명은 표에 나와 있습니다. &&)是 AND 布尔操作。只有两个操作数都为 true 时,才返回 true,否则返回 false。具体描述如表所示。

逻辑与运算
第一个操作数 第二个操作数 运算结果
true true true
true false false
false true false
false false false

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

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

  • 第 2 步:检测第一个操作数的值。如果左侧表达式的值可转换为 false(如 null、undefined、NaN、0、""、false),那么就会结束运算,直接返回第一个操作数的值。

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

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

示例1

下面代码利用逻辑与运算检测变量并进行初始化。

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

等效于:

var user;  //定义变量
if (! user){  //条件判断
    console.log("变量没有赋值");
}

如果变量 user 的值为 0 或空字符串等假值转换为布尔值时,则为 false,那么当变量赋值之后,依然提示变量没有赋值。因此,在设计时必须确保逻辑与左侧的表达式返回值是一个可以预测的值。

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

右侧表达式不应该包含赋值、递增、递减和函数调用等有效运算,因为当左侧表达式为 false 时,则直接跳过右侧表达式,会给后面的运算带来潜在影响。

逻辑或运算

逻辑或运算||

논리 AND 연산첫 번째 피연산자두 번째 피연산자연산 결과truetruetruetrue거짓 거짓거짓참 falsefalsefalsefalsefalse
🎜🎜논리적 AND는 일종의 단락논리인데, 왼쪽의 식이 false라면 결과는 단락되어 버립니다. 오른쪽에는 추가 작업 없이 반환됩니다. 연산 논리는 다음과 같습니다. 🎜
  • 🎜1단계: 첫 번째 피연산자(왼쪽 표현식)의 값을 계산합니다. 🎜
  • 🎜2단계: 첫 번째 피연산자의 값을 확인합니다. 왼쪽 표현식의 값이 false로 변환될 수 있는 경우(예: null, 정의되지 않음, NaN, 0, "", false) 연산이 종료되고 첫 번째 피연산자의 값이 직접 반환됩니다. 🎜
  • 🎜3단계: 첫 번째 피연산자를 true로 변환할 수 있으면 두 번째 피연산자(오른쪽 표현식)를 평가합니다. 🎜
  • 🎜4단계: 두 번째 피연산자의 값을 반환합니다. 🎜
🎜🎜예제 1🎜🎜🎜다음 코드는 논리 AND 연산을 사용하여 변수를 감지하고 초기화합니다. 🎜
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");
🎜와 동일합니다. user 변수의 값이 0이거나 빈 문자열과 같은 false 값이 부울 값으로 변환되면 false가 됩니다. 그런 다음 변수에 값이 할당된 후에는 해당 값이 적용됩니다. 여전히 변수에 값이 할당되지 않았다는 메시지가 표시됩니다. 따라서 설계 시 논리 AND의 왼쪽 표현식의 반환 값이 예측 가능한 값인지 확인해야 합니다. 🎜
var n = 3;
((n == 1) && console.log(1)) ||
((n == 2) && console.log(2)) ||
((n == 3) && console.log(3)) ||
(( ! n ) && console.log("null")) ||
🎜오른쪽 표현식에는 할당, 증가, 감소 및 함수 호출과 같은 유효한 연산이 포함되어서는 안 됩니다. 왜냐하면 왼쪽 표현식이 false인 경우 오른쪽 표현식을 직접 건너뛰어 잠재적인 위험이 있을 수 있기 때문입니다. 후속 작업에 영향을 미칩니다. 🎜🎜🎜🎜논리 OR 연산🎜🎜🎜🎜논리 OR 연산 ||은 부울 OR 연산입니다. 두 피연산자가 모두 true이거나 둘 중 하나가 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 자세한 내용은 그림에 나와 있습니다. 🎜🎜🎜논리 OR 연산🎜🎜🎜🎜첫 번째 피연산자🎜🎜두 번째 피연산자🎜🎜연산 결과🎜🎜🎜🎜true🎜🎜true🎜🎜true🎜🎜🎜🎜true🎜 🎜거짓 🎜🎜참🎜🎜 🎜🎜거짓🎜🎜참 🎜🎜true🎜🎜🎜🎜false🎜🎜false🎜🎜false🎜🎜🎜🎜

逻辑或也是一种短路逻辑,如果左侧表达式为 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高级教程

위 내용은 JavaScript의 논리 연산자는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.