JS運算子 和 及其優先順序

2021-06-09 06:35:22 字數 2593 閱讀 4391

今天看了一段yui compressor壓縮的js**:

usernum && (ind += index,ind >= usernum && (ind -= usernum),ind < 0 && (ind === -2 && (ind = -1),ind += usernum),selli.removeclass("on"),$(selli[ind]).addclass("on"));

直接瘋掉了,估計一下子沒幾個人能看懂。那麼就把他「翻譯」一下。

&& (邏輯與)

這裡主要是乙個「&&」運算,首先要搞懂這個,看乙個簡單的例子:

1vara = 1 && 2 && 3;//3

2varb = 0 && 1 && 2;//0

3varc = 1 && 0  && 2;//0

4alert(a),alert(b),alert(c);

嘿嘿,寫法很奇怪,執行的結果是3,0,0。一般我們在if語句中經常用到。「&&」 (邏輯與) 運算和「||」運算真好相反,「&&」 運算遇到false就返回。

例如: a && b ,如果 a 為true,直接返回b,而不管b為true或者false 。如果 a 為false 那麼直接返回a,上面例子中第乙個var a = 1 && 2 && 3;因為1 && 2,1為真,返回2;2&&3, 2為真,返回3 。

搞懂了「&&」 運算,再來看最上的面的yui compressor壓縮的js**,翻譯一下:

if(usernum)

if(ind < 0)

ind += usernum;

} selli.removeclass("on");

$(selli[ind]).addclass("on");

}

說來慚愧,年紀大了,足足「翻譯」了半個小時,還是在同事的幫助下才「翻譯」正確。

||(邏輯或)

再來看看「||」(邏輯或)運算,看例子:

1vara = 0 || 1 || 2;//1

2varb = 1 || 0 || 3;//1

3alert(a),alert(b);

「||」運算遇到true就返回。例如:a || b ,如果 a 為false,直接返回b,而不管b為true或者false 。如果 a 為true,直接返回a,而不會繼續往下執行。

&& (邏輯與) 和||(邏輯或)混合使用的時候要注意他們的優先順序:

&& (邏輯與) 優先順序高於||(邏輯或)

return a && b || c ,

根據a來判斷返回值,a 是 false 則肯定返回 c;如果 b , c 都是 true ,那麼我們就可以根據 a 來決定b 還是 c ,如果 a 是 false 則返回 c,如果a是true 則返回 b。

return a || b && c

根據優先順序相當於先算 b && c ,然後和a 相 或;如果a是true,則返回a,不論是b或c,如果a是false,則如果b是false,返回b,如果b是true,返回c;

1vara = 3  &&  0 || 2;//2

3varb = 3 || 0  &&  2;// 3

5varc= 0 || 2 && 3;// 3

6alert(a),alert(b),alert(c);

另附:js運算子優先順序(從高到低列出)

運算子描述

. ()

字段訪問、陣列下標、函式呼叫以及表示式分組

++ -- - ~ ! delete new typeof void

一元運算子、返回資料型別、物件建立、未定義值

* / %

乘法、除法、取模

+ - +

加法、減法、字串連線

<< >> >>>

移位< <= > >= instanceof

小於、小於等於、大於、大於等於、instanceof

== != === !==

等於、不等於、嚴格相等、非嚴格相等

&按位與

^按位異或

|按位或

&&邏輯與

||邏輯或

?:條件

= op=

賦值、運算賦值

,多重求值

JS運算子和運算子優先順序

先做一道題 var val abcd console.log value is val abcd a b 控制台列印出的結果是 a 因為連線符的優先順序高於三元運算子,所以該題目相當於 value is true a b 由此得出該題的兩個變體 console.log value is val ab...

js運算子優先順序

運算子 描述.字段訪問 陣列下標 函式呼叫以及表示式分組 delete new typeof void 一元運算子 返回資料型別 物件建立 未定義值 乘法 除法 取模 加法 減法 字串連線 移位 instanceof 小於 小於等於 大於 大於等於 instanceof 等於 不等於 嚴格相等 非嚴...

Java運算子及其優先順序

如有錯誤,敬請指正!注意 在這裡,使用ii表示邏輯或,使用i表示按位或。符號說明 加法 減法 乘法 除法,當運算元都是整數時,表示取整除法 否則,表示除法。例如,15 2等於7,15 2.0等於7.5。取餘。例如,15 7等於1,15.1 7等於1.0999999999999996。自增運算符號,表...