논리 연산자 "&&", "||" 및 "!"는 부울 산술 연산을 수행하며 관계 연산자와 함께 사용되는 경우가 많습니다. 논리 연산자는 여러 관계 표현식을 결합하여 더 복잡한 표현식을 형성합니다.
i. 논리 AND
"&&" 연산자는 세 가지 수준에서 이해될 수 있습니다. 가장 간단한 이해는 피연산자가 모두 부울 값인 경우 "&&"는 두 부울 값에 대해 부울 AND(AND) 연산을 수행하고, 첫 번째 피연산자와 두 번째 피연산자가 모두 true인 경우에만 true를 반환한다는 것입니다. 피연산자가 false이면 false를 반환합니다.
"&&"는 두 관계식을 연결하는 데 사용됩니다
x == 0 && y == 0 //x와 y가 모두 0인 경우에만 True가 반환됩니다
관계식은 항상 true 또는 false를 반환하므로 이렇게 사용하면 "&&" 자체도 true 또는 false를 반환합니다. 관계 연산자는 "&&"(및 "||")보다 우선순위가 높으므로 이와 같은 표현식은 괄호 없이도 안전하게 작성할 수 있습니다.
"&&" 피연산자는 반드시 부울 값일 필요는 없습니다. 일부 값은 "참 값"과 "거짓 값"으로 간주될 수 있습니다. (false 값이 false null undefine 0 -0 NaN 및 ""인 경우 모든 객체를 포함한 모든 값과 기타 값은 true 값입니다.) "&&"에 대한 두 번째 이해 수준은 "&&"가 true 및 false 값에 대해 부울 AND(AND) 연산을 수행할 수 있다는 것입니다. 두 피연산자가 모두 true이면 true 값이 반환되고, 그렇지 않으면 적어도 하나의 피연산자는 false입니다. JavaScript에서 부울 값이 사용될 때마다 표현식 문은 이를 true 또는 false 값으로 처리하므로 실제로 "&&"가 항상 true와 false를 반환하지는 않습니다. 그러나 이는 큰 문제가 아닙니다.
위에서 언급한 연산자는 "참값"과 "거짓값"을 반환하지만 "참값"과 "거짓값"이 무엇인지는 설명하지 않는다는 점에 유의해야 합니다. "&&"에 대한 세 번째 수준의 이해입니다. 연산자는 먼저 왼쪽 피연산자의 값을 계산합니다. 즉, "&&"의 왼쪽에 있는 표현식을 먼저 계산합니다. 계산 결과가 거짓 값이면 전체 표현식의 결과도 거짓 값이어야 합니다. 따라서 "&&"는 오른쪽 피연산자를 계산하지 않고 단순히 왼쪽 피연산자를 반환합니다.
var o = { x: 1 }; var p = null; o && o.x; //=>1 : 1:0是真值,因此返回值是o.x p && p.x //= null :p是假值,因此将其返回,而并不计算p.x
이것은 "&&"가 올바른 피연산자를 계산하지 못할 수 있는 상황을 이해하는 데 중요합니다. 위 코드에서 변수 P의 값은 null이므로 p.x를 계산하면 예외 오류가 발생합니다. p 계산 동작 p. 조건부로 코드를 실행합니다. 예를 들어, 아래 두 코드는 동일합니다.
if (a == b) stop(); //只有a==b时才能调运stop() (a == b) && stop(); //同上
일반적으로 "&&" 오른쪽 표현식에 부작용(할당, 증가, 감소 및 함수 호출 표현식)이 있는 경우 특히 주의하세요. 부작용이 있는 이러한 표현식의 실행은 왼쪽 연산자 마우스의 계산 결과에 따라 달라지기 때문입니다.
"&&"는 이해의 두 번째 및 세 번째 수준에 따라 일부 복잡한 표현식 작업을 수행할 수 있지만 대부분의 경우 "&&"는 true 및 false 값에 대한 부울 계산을 수행하는 데만 사용됩니다.
ii. 논리 OR(||)
"||" 연산자는 두 피연산자에 대해 부울 OR(OR) 연산을 수행합니다. 피연산자 중 하나가 true이면 true를 반환하고, 두 피연산자 모두 false이면 false를 반환합니다.
"||" 연산자는 대부분의 경우 "&&"와 같이 단순한 부울 OR(OR) 연산을 수행하지만 먼저 첫 번째 피연산자 값, 즉 Back to를 계산하는 좀 더 복잡한 동작도 수행합니다. 먼저 왼쪽의 표현식을 평가하고, 평가 결과가 true이면 참 값을 반환하고, 그렇지 않으면 두 번째 값을 평가합니다.
"&&"처럼, 오른쪽에 부작용이 있는 표현식을 명시적으로 사용하지 않는 한 부작용이 있는 일부 표현식이 포함된 오른쪽 피연산자를 피해야 하며 오른쪽의 표현식이 평가되지 않을 수 있습니다.
이 연산자가 사용되는 가장 일반적인 방법은 대체 표현식 세트에서 첫 번째 참 값 표현식을 선택하는 것입니다.
//如果max_width已经定义了,则直接使用它。赋值在preferences对象中查找max_width //如果没有定义它,则使用一个写死的常量。 var max =max_width || preferences.max_windth || 500;
이 일반적인 사용법은 일반적으로 매개변수에 대한 기본값을 제공하기 위해 함수 본문 내에서 사용됩니다.
//将o成功的属性复制到p中,并返回p function copy(o, p) { p = p || {}; //如果向参数p没有传入任何对象,则使用一个新创建对象。 //函数体内的主逻辑
iii. 논리 NOT(!)
"!" 연산자는 단일 피연산자 앞에 배치되는 단항 연산자입니다. 그 목적은 피연산자의 부울 값을 부정하는 것입니다.
"&&" 및 "||" 연산자와 달리 "!" 연산자는 먼저 피연산자를 부울 값으로 변환한 다음 부울 값을 부정합니다. 즉, "!"는 항상 true와 false를 반환합니다. 또한 두 개의 논리 NOT 연산을 사용하여 값의 부울 값을 얻을 수 있습니다.
"!"는 우선 순위가 높으며 피연산자와 밀접하게 연결되어 있습니다. p && q를 쌍으로 연결하려면 괄호가 필요합니다!( 피 && q). 다음 코드:
!(p && q) === !p || !q !(p || q) === !p && !q
p와 q의 모든 값에 대해 이 두 표현식은 항상 유지됩니다.
위 내용은 자바스크립트 기초과정에서 논리식의 정의와 사용법을 자세히 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!