中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js中的 || 與 && 運算符詳解

發布時間:2020-08-23 01:23:06 來源:腳本之家 閱讀:170 作者:她夏了夏天 欄目:web開發

js中邏輯運算符在開發中可以算是比較常見的運算符了,主要有三種:邏輯與&&、邏輯或||和邏輯非!。

當&&和|| 連接語句時,兩邊的語句會轉化為布爾類型(Boolean),然后再進行運算,具體的運算規則如下:

1.&&

1.1兩邊條件都為true時,結果才為true;
1.2如果有一個為false,結果就為false;
1.3當第一個條件為false時,就不再判斷后面的條件

注意:當數值參與邏輯與運算時,結果為true,那么會返回的會是第二個為真的值;如果結果為false,返回的會是第一個為假的值。

2.||

2.1只要有一個條件為true時,結果就為true;
2.2當兩個條件都為false時,結果才為false;
2.3當一個條件為true時,后面的條件不再判斷

注意:當數值參與邏輯或運算時,結果為true,會返回第一個為真的值;如果結果為false,會返回第二個為假的值;

3.!

3.1當條件為false時,結果為true;反之亦然。

上代碼說明:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <title>demo</title> 
  <script> 
    console.log( 5 && 4 );//當結果為真時,返回第二個為真的值4 
    console.log( 0 && 4 );//當結果為假時,返回第一個為假的值0 
    console.log( 5 || 4 );//當結果為真時,返回第一個為真的值5 
    console.log( 0 || 0 );//當結果為假時,返回第二個為假的值0 
    console.log((3||2)&&(5||0));//5 
    console.log(!5);//false 
  </script> 
</head> 
<body> 
 
</body> 
</html> 

補充:邏輯與的優先級是高于邏輯或的;

比如console.log(3||2&&5||0),會先算2&&5的值為5,然后再3||5----3,最后再3||0----3,所以最終結果為3.

補充

表達式a && 表達式b :  計算表達式a(也可以是函數)的運算結果,
                      如果為 True, 執行表達式b(或函數),并返回b的結果;
                      如果為 False,返回a的結果;

表達式a || 表達式b :   計算表達式a(也可以是函數)的運算結果,
                      如果為 Fasle, 執行表達式b(或函數),并返回b的結果;
                      如果為 True,返回a的結果;

轉換規則:

對象為true;
非零數字為true;

零為false;

非空字符串為true;
空字符串為法false;
其他為false;

例如:
var  a =  obj || " "  ;     //如果 obj 為空,a就賦值為 " " ;
var  a = check() &&  do();    //如果check()返回為真,就執行do(),并將結果賦值給 a;

其他網友的補充

今天復習js繼承的時候發現了一個問題,先上代碼了

<script type="text/javascript">
 window.onload = function () {
  var mama,
  mama1,
  test = function (name) {
  debugger;
  this.name = name || 'mama';
  };
  debugger;
  mama = new test();
  mama1 = new test("mama1");
  alert(mama.name);//name = mama
  alert(mama1.name);// name = mama1
 }

 </script>

在執行構造函數的時候,無參的構造函數返回的name是'mama',有參數時,實例的name就是參數值了。
這個時候我就有點犯迷糊了,為什么邏輯運算符||能這么用呢?
由于是C#出身,所以對js ||這樣用感覺很奇怪。
沒轍,不懂先研究,實驗實驗就知道了。

var b, c, d;
  b = true || 0;//b=true;
  c = false || 0;//c=0;
  d = 1 || 0;//d=1;

換成別的呢?

var b, c, d;
  b = 1-1 || 1+1; //b=2
  c = function () { return undefined } || function () { return 1};//c=function();
  d = c();//d=undefined
var b, c, d;
  b = 1-1 || 1+1; //b=2
  c = function () { return 1 } || function () { return undefined};//c=function();
  d = c();//d=1
b = {} || { a: 1, getA: function () { return this.a}}; //b=object

js中的 || 與 && 運算符詳解

var b, c, d;
  b = { a: 1, getA: function () { return this.a } } || {}; //b=object
  c = b.getA();//c=1;

通過這幾個實驗,可以看出,JS的||并不是像C#里面的||一樣 單純的返回一個布爾類型。
大家都知道js的布爾類型判定是對象是true,非零是true,非空字符串是true其余的都是false

 由此得出
邏輯或 ||  : var a = 表達式1 || 表達式2

      表達式1    表達式2    a取值
        1          0      表達式1結果值
        1        1      表達式1結果值
        0        1      表達式2結果值
        0        0      表達式2結果值
 

邏輯與 &&  : var a = 表達式1 && 表達式2

      表達式1    表達式2    a取值

        1          0      表達式2結果值
        1        1      表達式2結果值
        0        1      表達式1結果值
        0        0      表達式1結果值

主要原因是因為短路,邏輯或 || 在前面有一個ture的時候則不看后面直接停止,邏輯與&&同理。
然后計算賦值和我們平時一樣之獲取最新的一次計算結果值。

例如

b = (1 + 1, 2 + 2, 3 + 3);//b=6;

嘛嘛,當然只是猜測。
以上僅供參考。萌新一只,望各位大佬輕批。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通河县| 抚顺县| 阿瓦提县| 开远市| 原阳县| 乐陵市| 黎平县| 读书| 天祝| 淮北市| 闽清县| 沭阳县| 台州市| 和林格尔县| 秀山| 丹巴县| 栾川县| 乐昌市| 鸡西市| 新乐市| 南康市| 阿瓦提县| 衡南县| 高密市| 枣强县| 纳雍县| 榆社县| 江永县| 柳河县| 全州县| 麻栗坡县| 鲜城| 时尚| 邢台县| 怀集县| 广宁县| 延津县| 菏泽市| 芜湖县| 乌兰察布市| 嘉祥县|