>웹 프론트엔드 >JS 튜토리얼 >JavaScript 로직 및 Operator_javascript 기술에 대한 자세한 설명

JavaScript 로직 및 Operator_javascript 기술에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:27:241236검색

JavaScript에서 논리 AND 연산자는 이중 앰퍼샌드(&&)로 표시됩니다.

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

다음 진리표는 논리 AND 연산자의 동작을 설명합니다.

논리적 AND 연산의 피연산자는 부울 값뿐만 아니라 모든 유형일 수 있습니다. 피연산자가 원래 부울 값이 아닌 경우 논리적 AND 연산이 반드시 부울 값을 반환하는 것은 아닙니다.

논리 AND 연산자는 다음과 같이 작동합니다.

  • 피연산자 중 하나가 객체이고 다른 피연산자는 부울 값인 경우 해당 객체를 반환합니다.
  • 두 피연산자가 모두 객체이면 두 번째 객체를 반환합니다.
  • 피연산자가 null인 경우 null을 반환합니다.
  • 피연산자가 NaN이면 NaN을 반환합니다.
  • 피연산자가 정의되지 않은 경우 오류가 발생합니다.
  • 두 피연산자가 모두 부울 유형인 경우 부울 값을 반환합니다

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의 논리 연산자를 더 잘 배우는 데 도움이 되기를 바랍니다.

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