JavaScript邏輯運算子
一、 邏輯運算子
| 運算子 | 描述 |
|---|---|
| ! | 非運算子,表示取反 |
| && | 與(且)運算子 |
| || | 或運算子 |
| ? : | 三元條件運算子(也叫三目條件運算子) |
1.1取反運算子
取反運算子是一個感嘆號,用于將布林值變為相反值,即true變成false,false變成true,
!true // false
!false // true
對于非布林值,取反運算子會將其轉為布林值,可以這樣記憶,以下六個值取反后為true,其他值都為false,
undefinednullfalse0NaN- 空字串(
'')
!undefined // true
!null // true
!0 // true
!NaN // true
!"" // true
!54 // false
!'hello' // false
// 上面代碼中,不管什么型別的值,經過取反運算后,都變成了布林值,
1.2與(且)運算子
且運算子(&&)往往用于多個運算式的求值,
它的運算規則是:如果第一個運算子的布林值為true,則回傳第二個運算子的值(注意是值,不是布林值);如果第一個運算子的布林值為false,則直接回傳第一個運算子的值,且不再對第二個運算子求值,
't' && '' // ""
't' && 'f' // "f"
't' && (1 + 2) // 3
'' && 'f' // ""
'' && '' // ""
var x = 1;
(1 - 1) && ( x += 1) // 0
x // 1
// 上面代碼的最后一個例子,由于且運算子的第一個運算子的布林值為`false`,則直接回傳它的值`0`,而不再對第二個運算子求值,所以變數`x`的值沒變,
這種跳過第二個運算子的機制,被稱為“短路”,
且運算子可以多個連用,這時回傳第一個布林值為false的運算式的值,如果所有運算式的布林值都為true,則回傳最后一個運算式的值,
true && 'foo' && '' && 4 && 'foo' && true
// ''
1 && 2 && 3
// 3
// 上面代碼中,例一里面,首次出現布林值為`false`的運算式為第三個運算式,所以得到一個空字串,例二里面,所有運算式的布林值都是`true`,所有回傳最后一個運算式的值`3`,
1.3或運算子
或運算子(||)也用于多個運算式的求值,它的運算規則是:如果第一個運算子的布林值為true,則回傳第一個運算子的值,且不再對第二個運算子求值;如果第一個運算子的布林值為false,則回傳第二個運算子的值,
't' || '' // "t"
't' || 'f' // "t"
'' || 'f' // "f"
'' || '' // ""
短路規則對這個運算子也適用,
var x = 1;
true || (x = 2) // true
x // 1
// 上面代碼中,或運算子的第一個運算子為`true`,所以直接回傳`true`,不再運行第二個運算子,所以,`x`的值沒有改變,
1.4 三元條件運算子
三元條件運算子:運算式 1 ? 運算式 2 : 運算式 3,如果第一個運算式的布林值為true,則回傳第二個運算式的值,否則回傳第三個運算式的值,
// 三元條件運算子:運算式 1 ? 運算式 2 : 運算式 3
2 > 1 ? 'hello' : 'world' // "hello"
2 < 1 ? 'hello' : 'world' // "world"
console.log(true ? 'T' : 'F');
二、 賦值運算子
| 運算子 | 描述 |
|---|---|
| = | 直接賦值操作 |
| += | 運行加法之后賦值x += y 等同于x = x + y; |
| -= | 運行減法之后賦值 |
| *= | 運行乘法之后賦值 |
| /= | 運行除法之后賦值 |
| %= | 運行取余之后賦值 |
賦值運算子(Assignment Operators)用于給變數賦值,
最常見的賦值運算子,當然就是等號(=),
// 將 1 賦值給變數 x
var x = 1;
// 將變數 y 的值賦值給變數 x
var x = y;
賦值運算子還可以與其他運算子結合,形成變體,下面是與算術運算子的結合,
// 等同于 x = x + y
x += y
// 等同于 x = x - y
x -= y
// 等同于 x = x * y
x *= y
// 等同于 x = x / y
x /= y
// 等同于 x = x % y
x %= y
2.1運算子優先級
a) 最基本的運算子優先級就是所謂的“ 先乘除, 后加減”
b) 對于優先順序處于同一層次上的運算子, 按照從左到右出現的順序計算
c) typeof 是優先級別最高的運算子之一,
d) 用小括號來提升運算子的優先級
e) 賦值運算的優先級非常低,通常都是最后執行
| 運算子 | 描述 |
|---|---|
| () | 用小括號來提升運算子的優先級 |
| …++ 、…–、!、typeof | 一元運算子-自增、自減、取反、檢測資料型別(只對一個資料進行操作) |
| *、/、% | 乘法、除法、取余 |
| +、-、+ | 加法、減法、字串連接 |
| <、<=、>、>=、instanceof | 小于、小于等于、大于、大于等于、檢測陣列 |
| 、!=、=、!== | 等于、不等于、嚴格相等、嚴格不相等 |
| && | 邏輯與 |
| || | 邏輯或 |
| ?: | 條件運算子 |
| = | 賦值運算子 |
總結
以上就是今天帶你走進從零認識JavaScript到精髓(四)JavaScript 邏輯運算子
會持續更新中…
原創不易,期待您的點贊關注與轉發評論😜😜😜
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/350970.html
標籤:其他
上一篇:失敗的枕頭構建輪
