這是我參與8月更文挑戰的第8天,活動詳情查看:8月更文挑戰面試
+ - * / % ()
markdown
NaN參與的運算:獲得的結果都是NaNsvn
Infinity參與的運算,視狀況而定, 好比:post
5/Infinity=0
5%Infinity=5
Infinity%5=NaN
Infinity+5=Infinity
Infinity / Infinity = NaN
Infinity - Infinity = NAN
Infinity % Infinity = NAN
複製代碼
工做中並不會使用特殊值運算,沒有實際應用的意義,可是要了解,以防面試遇到flex
例如:編碼
var a = 3 - "36" % 5 + "2" - 2
console.log(a)
var b = "36" % 5
console.log(b)
var c = 3 - "36" % 5 + "2"
console.log(c)
複製代碼
輸出:url
20
1
22
複製代碼
其餘的數據類型會隱式轉換爲數字類型:spa
也叫做關係運算符。一個 比較運算符 comparison operator 比較它的操做數並返回一個布爾類型值。運算結果要麼是true,要麼是false。code
> 大於
< 小於
>= 大於等於
<= 小於等於
== 相等,只判斷值大小是否相等,不判斷數據類型
!= 不等,與相等徹底相反
===全等,不光判斷值相等,還要判斷數據類型相等
!==不全等,與全等於徹底相反
複製代碼
Infinity == Infinity ->True
Infinity === Infinity ->True
Infinity > Infinity ->False
Infinity >= Infinity ->True
複製代碼
其餘數據類型也會隱式轉換爲數字參與比較。orm
「123」→123 true→1 false→0 null→0 undefined→NaN 「」→0 「abc」→NaN
複製代碼
null 的判斷比較特殊:null 與 0 判斷時,相等判斷爲 false,>= 和 <= 判斷爲 true
null == undefined -> True
不會發生隱式轉換爲數字,而是比較兩個字符串的 Unicode 編碼順序 字符編碼順序:從前日後 0-9,A-Z,a-z,前面的小於後面的 比較時,不關心兩個字符串的長度,從第一個字符開始比較,依次日後順延比較,直到比較出大小,就再也不日後比較
邏輯運算符經常使用於布爾類型值之間; 當操做數都是布爾值時,返回值也是布爾值
&& 邏輯與運算符且
|| 邏輯或運算符
! 邏輯非運算符
複製代碼
當它們用於非布爾值的時候,返回值就多是非布爾值。其實這種運算很是簡單:
綜合運算順序:非、與、或
= 等於
+= 加等於
-= 減等於
*= 乘等於
/= 除等於
%= 取餘等於
++ 遞加
-- 遞減
複製代碼
++ -- !
複製代碼
++ 或 -- 符號能夠寫在變量前和變量後面,位置不一樣可能致使程序運行結果不一樣
以 ++ 爲例:
var a = 3;
var b = a++;
var c = ++a;
console.log(a,b,c)
複製代碼
輸出:
5 3 5
複製代碼
輸出:
優先級從高到底:
1. () 優先級最高
2. 一元運算符 ++ -- !
3. 算數運算符 先* / % 後 + -
4. 關係運算符 > >= < <=
5. 相等運算符 == != === !==
6. 邏輯運算符 先&& 後||
7. 賦值運算符
複製代碼
var a = 4; var num = 1 * (2 + 3) && a++ || 5 > 6 && 7 < 8 || !9;
console.log(num)
複製代碼
輸出:
4
複製代碼