ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptロジックとoperator_javascriptスキルの詳細な説明

JavaScriptロジックとoperator_javascriptスキルの詳細な説明

WBOY
WBOYオリジナル
2016-05-16 15:27:241175ブラウズ

JavaScript では、論理 AND 演算子は 2 つのアンパサンド (&&) で表されます

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

次の真理表は、論理 AND 演算子の動作を説明しています。

論理 AND 演算のオペランドはブール値だけでなく、任意の型にすることができることに注意してください。オペランドが元のブール値でない場合、論理 AND 演算は必ずしもブール値を返すわけではありません。

論理 AND 演算子は次のように動作します:

  • 一方のオペランドがオブジェクトで、もう一方のオペランドがブール値の場合は、そのオブジェクトを返します。
  • 両方のオペランドがオブジェクトの場合は、2 番目のオブジェクトを返します。
  • オペランドが null の場合は、null を返します。
  • オペランドが NaN の場合は、NaN を返します。
  • オペランドが未定義の場合、エラーが発生します。
  • 両方のオペランドがブール型の場合、ブール値を返します

Java の論理 AND 演算と同様に、JavaScript の論理 AND 演算も単純な演算です。つまり、最初のオペランドが結果を決定する場合、2 番目のオペランドは計算されません。論理 AND 演算の場合、最初のオペランドが false の場合、2 番目のオペランドの値が何であっても、結果が true になることはありません。
次の例を考えてみましょう:

var bTrue = true;
var bResult = (bTrue && bUnknown); //发生错误
alert(bResult); //这一行不会执行

コードの実行結果:

このコードは、変数 bUnknown が定義されていないため、論理 AND 演算を実行するとエラーをスローします。論理 AND 演算によって変数 bUnknown が評価され続けるため、変数 bTrue の値は true になります。 bUnknown の値は未定義であり、論理 AND 演算で使用できないため、これを行うとエラーが発生します。
この例を変更して最初の数値を false に設定すると、エラーは発生しなくなります:

var bTrue = false;
var bResult = (bTrue && bUnknown); //不会发生错误
alert("bTrue && bUnknown的结果是:"+(bResult));//输出 "false"

このコードでは、スクリプトは論理 AND 演算によって返される値、つまり文字列「false」を出力します。変数 bUnknown の値が unfineed であっても、最初のオペランドの値が false であるため、変数 bUnknown は評価されません。

実行結果:

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 までご連絡ください。