1. 程式人生 > >JavaScript學習總結(四)——邏輯OR運算符詳解

JavaScript學習總結(四)——邏輯OR運算符詳解

ots lpad letter center obj pbc ron 都是 false

  在JavaScript中,邏輯OR運算符用||表示

1 var bTrue = true;
2 var bFalse = false;
3 var bResult = bTrue || bFalse;

下面的真值表描述了邏輯AND運算符的行為:

運算數 1 運算數 2 結果
true true true
true false true
false true true
false false false

在JavaScript中,0,"",false,null,undefined,NaN均表示false,

  可以用如下的代碼證明:

技術分享圖片
 1
<script type="text/javascript"> 2 var bFalse = false;//bool類型 3 var strEmpty = "";//空字符串 4 var iZero = 0;//數是0 5 var oNull=null;//null 6 var oUndefined;//undifined 7 var oNaN=NaN;//NaN 8 /* 9 判斷JavaScript 變量的 Boolean 值時,也可以使用邏輯 NOT 運算符。這樣做需要在一行代碼中使用兩個 NOT 運算符。
10 無論運算數是什麽類型,第一個 NOT 運算符返回 Boolean 值。第二個 NOT 將對該 Boolean 值求負,從而給出變量真正的 Boolean 值。 11 */ 12 document.write("<PRE>"); 13 document.writeln("布爾數false的邏輯值是 " + (!!bFalse)); 14 document.writeln("空字符串(\"\")的邏輯值是 " + (!!strEmpty)); 15 document.writeln("數字0的邏輯值是 " + (!!iZero)); 16
document.writeln("NaN的邏輯值是 :" + (!!oNaN)); 17 document.writeln("null的邏輯值是 " + (!!oNull)); 18 document.writeln("undefined的邏輯值是 " + (!!oUndefined)); 19 document.write("</PRE>"); 20 </script>
技術分享圖片

運行結果:

  技術分享圖片

  JavaScript的邏輯 OR 運算也是簡便運算,對於邏輯 OR 運算符來說,如果第一個運算數值為 true,就不再計算第二個運算數如果某個運算數不是 Boolean 值,邏輯 OR 運算並不一定返回 Boolean 值,邏輯||的運算規則如下:

  1. 如果一個運算數是對象,另一個是 Boolean 值,返回該對象。
  2. 如果兩個運算數都是對象,返回第一個對象。
  3. 如果某個運算數是 null,返回 null。
  4. 如果某個運算數是 NaN,返回 NaN。
  5. 如果某個運算數是 undefined,發生錯誤。

  對於這些運算規則,沒有必要死記硬背,因為在JavaScript中,可以使用邏輯Not運算符來判斷JavaScript變量的Boolean值,判斷的方式就是"!!變量名",例如:

使用邏輯Not運算符來判斷JavaScript變量的Boolean值

技術分享圖片
 1 <script type="text/javascript">
 2      var bFalse = false;//運算數是bool類型的數
 3      var sRed = "red";//運算數是字符串
 4      var iZero = 0;//運算數是0
 5      var iThreeFourFive = 345;//運算數是 0 以外的任何數字
 6      var oObject = new Object();//對象
 7      var oNull=null;//運算數是null
 8      var oUndefined;//運算數是undifined
 9      var oNaN=parseInt("abc");//使用parseInt方法把嘗試字符串abc轉換成整數,因為abc不是數字,因此是轉不了的,所以返回的結果就是NaN
10     /*
11     判斷JavaScript 變量的 Boolean 值時,也可以使用邏輯 NOT 運算符。這樣做需要在一行代碼中使用兩個 NOT 運算符。
12     無論運算數是什麽類型,第一個 NOT 運算符返回 Boolean 值。第二個 NOT 將對該 Boolean 值取反,從而給出變量真正的 Boolean 值。
13     */
14     document.write("<PRE>");
15     document.writeln("布爾數false 的邏輯值是 " + (!!bFalse));
16     document.writeln("字符串sRed 的邏輯值是 " + (!!sRed));
17     document.writeln("數字0 的邏輯值是 " + (!!iZero));
18     document.writeln("數字345 的邏輯值是 " + (!!iThreeFourFive));
19     document.writeln("對象Object 的邏輯值是 " + (!!oObject));
20     document.writeln("NaN的邏輯值是 :" + (!!oNaN));
21     document.writeln("null 的邏輯值是 " + (!!oNull));
22     document.writeln("undefined 的邏輯值是 " + (!!oUndefined));
23     document.write("</PRE>");
24   </script>
技術分享圖片

判斷結果:

  技術分享圖片

邏輯||運算符測試腳本:

技術分享圖片
 1  <script type="text/javascript">
 2   document.write("<PRE>");
 3   /*JavaScript中的||將返回第一個不為false的那個值(對象亦可)或者最後一個值(如果全部都為false的話)*/
 4     var a=2;
 5     var b=90;
 6     var c=a||b;//在JavaScript中,非0的數字就代表true,0就代表false
 7     document.writeln("a=2,b=90,c=a||b的結果是:"+c);//結果為2,返回第一個不為false的那個值,所以值是2
 8 
 9     var bFalse1=false;
10     var bFalse2=false;
11     var num=0;//0代表false
12     var result=bFalse1||bFalse2||num;
13     document.writeln("bFalse1=false,bFalse2=false,num=0,result=bFalse1||bFalse2||num的結果是:"+num);//如果全部都為false的話,返回最後一個值,因此結果是0
14 
15     /*如果一個運算數是對象,另一個是 Boolean 值,返回該對象。*/
16     var obj = new Object();
17     var bTrue=true;
18     var bFalse=false;
19     document.writeln("obj||bTrue的結果是:"+(obj||bTrue));//返回object
20     document.writeln("bTrue||obj的結果是:"+(bTrue||obj));//返回true,邏輯 OR 運算也是簡便運算。對於邏輯 OR 運算符來說,如果第一個運算數值為 true,就不再計算第二個運算數。
21     document.writeln("obj||bFalse的結果是:"+(obj||bFalse));//返回object
22     document.writeln("bFalse||obj的結果是:"+(bFalse||obj));//返回object
23 
24     /*如果兩個運算數都是對象,返回第一個對象*/
25     var obj1 = new Object();
26     var obj2 = new Object();
27     document.writeln("obj1==(obj1||obj2)的結果是:"+(obj1==(obj1||obj2)));//結果為true
28     document.writeln("obj2==(obj1||obj2)的結果是:"+(obj2==(obj1||obj2)));//結果為false
29 
30     /*如果某個運算數是 null,返回 null。*/
31     var c=1;
32     var d=null;
33     document.writeln("d=null,null的布爾值是;"+(!!d));
34     document.writeln("c=1,d=null,c||d的結果是:"+(c||d));
35     document.writeln("c=1,d=null,d||c的結果是:"+(d||c));
36     
37     var o=new Object();
38     document.writeln("o是一個對象,d=null,o||d的結果是:"+(o||d));//返回object
39     document.writeln("o是一個對象,d=null,d||o的結果是:"+(d||o));//返回object
40     
41     var zero=0;
42     document.writeln("zero=0,d=null,zero||d的結果是:"+(zero||d));//返回null
43     document.writeln("zero=0,d=null,d||zero的結果是:"+(d||zero));//返回0
44 
45     var bTrue = true;
46     var bResult = (bTrue || bUnknown);
47     /*變量 bUnknown 是未定義的。不過,由於變量 bTrue 的值為 true,bUnknown 不會被計算,因此輸出的是 "true"。*/
48     document.writeln("bUnknown是未定義的一個變量,bResult = (bTrue || bUnknown)的結果是:"+bResult);//輸出 "true"
49 
50      bFalse = false;
51      bResult = (bFalse || bUnknown);    //發生錯誤
52     document.writeln(bResult);            //不會執行這一行
53     document.write("</PRE>");
技術分享圖片

運行結果:

技術分享圖片

JavaScript學習總結(四)——邏輯OR運算符詳解