JavaScript에서 논리 AND 연산자는 이중 앰퍼샌드(&&)로 표시됩니다.
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
다음 진리표는 논리 AND 연산자의 동작을 설명합니다.
논리적 AND 연산의 피연산자는 부울 값뿐만 아니라 모든 유형일 수 있습니다. 피연산자가 원래 부울 값이 아닌 경우 논리적 AND 연산이 반드시 부울 값을 반환하는 것은 아닙니다.
논리 AND 연산자는 다음과 같이 작동합니다.
Java의 논리 AND 연산과 유사하게 JavaScript의 논리 AND 연산도 간단한 연산입니다. 즉, 첫 번째 피연산자가 결과를 결정하면 두 번째 피연산자는 계산되지 않습니다. 논리 AND 연산의 경우 첫 번째 피연산자가 false이면 두 번째 피연산자의 값에 관계없이 결과가 true가 될 수 없습니다.
다음 예를 고려해보세요.
var bTrue = true; var bResult = (bTrue && bUnknown); //发生错误 alert(bResult); //这一行不会执行
코드 실행 결과:
이 코드는 bUnknown 변수가 정의되지 않았기 때문에 논리 AND 연산을 수행할 때 오류를 발생시킵니다. bTrue 변수는 논리 AND 연산이 bUnknown 변수를 계속 평가하기 때문에 true 값을 갖습니다. 그렇게 하면 bUnknown 값이 정의되지 않고 논리적 AND 연산에 사용될 수 없기 때문에 오류가 발생합니다.
이 예제를 수정하고 첫 번째 숫자를 false로 설정하면 오류가 발생하지 않습니다.
var bTrue = false; var bResult = (bTrue && bUnknown); //不会发生错误 alert("bTrue && bUnknown的结果是:"+(bResult));//输出 "false"
이 코드에서 스크립트는 논리 AND 연산에 의해 반환된 값(문자열 "false")을 출력합니다. 변수 bUnknown의 값이 정의되지 않은 경우에도 첫 번째 피연산자의 값이 false이므로 평가되지 않습니다.
실행 결과:
JavaScript 논리 And 연산자의 동작 동작 확인
테스트 코드:
<script type="text/javascript"> document.write("验证JavaScript逻辑And运算符的运算行为:"); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse; /*1.如果两个运算数都是boolean类型,则返回boolean值*/ document.write("1.如果两个运算数都是boolean类型,则返回boolean值"); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); document.write("bTrue = true,bFalse = false,bTrue && bFalse的结果是:"+(bResult));//结果为false document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); var obj = new Object(); /*2.如果一个运算数是对象,另一个是 Boolean 值,返回该对象*/ document.write("2.如果一个运算数是对象,另一个是 Boolean 值,返回该对象"); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); document.write("obj是一个对象,true&&obj的结果是:"+(true&&obj)); document.write("<br/>"); document.write("obj==true&&obj的结果是:"+(obj==(true&&obj))); document.write("<br/>"); document.write("false&&obj的结果是:"+(false&&obj)); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); /*3.如果两个运算数都是对象,返回第二个对象。*/ var obj1 = new Object(); var obj2 = new Object(); document.write("3.如果两个运算数都是对象,返回第二个对象。"); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); document.write("obj1是一个对象,obj2是一个对象,obj1==(obj1&&obj2)的结果是:"+(obj1==(obj1&&obj2)));//结果为false document.write("<br/>"); document.write("obj1是一个对象,obj2是一个对象,obj2==(obj1&&obj2)的结果是:"+(obj2==(obj1&&obj2)));//结果为true document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); /*4.如果某个运算数是 null,返回null。*/ var a=null; var b=true; document.write("4.如果某个运算数是 null,返回null。"); document.write("<br/>"); document.write("a=null,b=true,a&&b的结果是:"+(a&&b)); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); /*5.如果某个运算数是NaN,返回NaN*/ var c = NaN; var d = "str"; document.write("5.如果某个运算数是NaN,返回NaN"); document.write("<br/>"); document.write("c=NaN,d=str,c&&d的结果是:"+(c&&d)); document.write("<br/>"); document.write("-----------------------------------------------------------------------------"); document.write("<br/>"); /* 6.JavaScript中的逻辑 AND 运算是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。 对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。 */ var bFalse = false; var bResult = (bFalse && bUnknown); document.write("6.JavaScript中的逻辑 AND 运算是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数"); document.write("<br/>"); document.write("对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。"); document.write("<br/>"); document.write("bFalse=false,bUnknown是一个未定义的变量,bFalse && bUnknown的结果是:"+(bResult)); //输出 "false" var bTrue = true; var bResult = (bTrue && bUnknown); //发生错误 alert(bResult); //这一行不会执行 </script>
위 내용은 JavaScript 논리 And 연산자에 대한 전체 소개입니다. 모든 사람이 js의 논리 연산자를 더 잘 배우는 데 도움이 되기를 바랍니다.