運算符
@jarringslee
-
*賦值運算符 = += -= = /= 對變量進行賦值的運算符,用于簡化代碼。左邊是容器,右邊是值
-
一元運算符
-
正號+ 符號- 賦予數據正值、負值
-
自增++ 自減–
前置和后置:++i和i++:一般情況下習慣使用后置i++,兩者在單獨使用時沒有區別。
兩者區別:在一行運算中,++i先給自身加完之后再參與運算,i++先參與運算之后在自加。
let i = 1; console.log(++i + 1) //i值先變為2再參與運算,輸出值為3
let i = 1; console.log(i++ + 1) //i先參與運算,輸出值為2,自身再自加變為2
let i = 1; console.log(i++ + ++i + i) /* i++:先用后加值是 1,然后 i 變成 2++i:先加后用i 從 2 變成 3,值是 3i:此時 i 已經是 3所以整個表達式就是:1 + 3 + 3 = 7因此打印結果是 7。 */
-
-
比較運算符 < > <= >= == === != !== 比較結果為boolean類型的值(只有true或者false)
- == 左右兩邊值是否相等
- === 左右兩邊值和類型是否都相等(全等,常用)
- != 左右兩邊是否值不相等
- !== 左右兩邊是否不全等
- NaN不等于任何值,包括它自己
隱式轉換下,常常會有值相等但類型不相同的例子。
在做
==
比較時會隱式轉換,所以經常出現 “值看起來一樣,但類型不同” 的情況,例如:'1' == 1 // true 字符串 '1' 被轉成數字 1 0 == false // true 布爾值 false 被轉成 0 null == undefined // true 規范規定這對特殊值相等 ' \n ' == 0 // true 空格字符串被轉成 0
而
===
不做任何類型轉換,只要類型不同就直接返回false
:'1' === 1 // false 0 === false // false null === undefined // false
所以:
==
比較轉換后的值===
比較值 + 類型
- 全等/不全等(=== / !==)先看類型,類型不同直接判 false / true。
- 相等/非相等(== / !=)先轉換再比較。
- 字符串比較按字典序(Unicode 碼點),逐位比,直到發現大小不同的值,前綴相同則短的小。
console.log(2 === '2'); // false (類型不同) console.log(NaN === NaN); // false (NaN !== NaN) console.log(2 !== '2'); // true (類型不同) console.log(2 != '2'); // false (轉換后相等)console.log('a' < 'b'); // true (97 < 98) console.log('aa' < 'ab'); // true (第二位 a < b) console.log('aa' < 'aac'); // true (前綴相同,aa 更短)
-
邏輯運算符 &&與(一假則假) ||或(一真則真) !非(真變假,假變真)
-
運算符優先級
優先級 運算符 順序 1 小括號 () 2 一元運算符 ++ -- ! 3 算術運算符 * / % 先于 + - 4 關系運算符 > >= < <= 5 相等運算符 == != === !== 6 邏輯運算符 && 先于 || 7 賦值運算符 = += -= … 8 逗號運算符 ,