javascript 或(||)、與(&&)運算總結

來源:互聯網
上載者:User

一、基本原則

1.按照運算子號優先順序,先 ()運算 再 與運算 再 或運算。

2.與運算:要求每個運算式都返回真才為真。

3.或運算:要求有一個運算式為真就返回真。

二、按照基本原則進行邏輯運算

1.與運算:要求每個運算式都返回真才為真,所以將計算運算式直至第一個非真運算式。所以將返回第一個非真運算式的值。

2.與運算:按上述法則,假設運算式最終為非假,即沒有一個非真運算式,根據第一法則,將返回最後一個運算式的值。

3.或運算:要求只要一個運算式返回真就為真,所以將計算運算式直至第一個非假運算式。所以將返回第一個非假運算式的值。

4.或運算:按第三法則,假設運算式最終為非真,即沒有一個非假運算式,根據第三法則,將返回最後一個運算式的值。

5.混合運算:按照優先順序分開計算。

三、測試

變數:

var a=1,b={},c=null,d=false;

其中a和b為非假運算式,c和d為非真運算式

 

1.運算式a && b && c && d將返回第一個非真運算式的值,即c為null。

2.運算式a && b && d && c將返回第一個非真運算式的值,即d為false。

 

1.運算式a && b將返回最後一個運算式的值,即b為[object object]。

2.運算式b && a將返回a為1。

 

1.運算式c || d將返回最後一個運算式的值,即d為false;

2.運算式d || c將返回c為null。


1.運算式a || b || c || d將返回第一個非假運算式的值,即a為1。

2.運算式b || a || c || d將返回第一個非假運算式的值,即b為[object object]。

 

1.運算式a && b || c && d

分解,先與運算再或運算 a && b值為b,c && d值為c。

得到 b || c,所以最終結果為第一個非假運算式b=[object object]。

2.運算式a && c || b && d

同上,得到 c || d,最終結果為d=false。

3.運算式c && a || b && d

同上,得到 c || d,最終結果為d=false。

4.運算式a || b && c || d

根據或運算的基本原則,最終得到結果a=1。

計算順序:

1.b && c得到c=null。

2.a || null ||……因為a=1為真,將直接返回a。

註:其實這個計算順序有待考證,第一步應該是計算了。

5.運算式c || a && b || d

計算順序:

1.a && b得到b=[object object]。

2.c || {} || d,計算到第一個非假值,返回[object object]。

註:第一步是一定計算了。

6.運算式

……

……

綜述:最終都歸結到了原則與法則。

1.如果運算式中最外層有||運算,直接找第一個非假運算式,其值為最終傳回值。

2.如果運算式中最外層有&&運算,直接找第一個非真運算式,其值為最終傳回值。

3.如果運算式中最外層有||運算且不存在非假運算式,其值為最後一個非假運算式的值。

4.如果運算式中最外層有&&運算且不存在非真運算式,其值為最後一個非真運算式的值。

5.運算式中有()運算子,請參照法則。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.