操作操作符榔昔,也叫運算符 operator ,是 js 中發(fā)起運算最簡單的方式瘪菌,例如:5 + 6 撒会。
表達式(expression) 的組成包含操作數(shù)和操作符,表達式會得到一個結(jié)果师妙,然后用結(jié)果參與程序诵肛。
算術(shù)運算符
算術(shù)運算符:+ - * / % ()
%
:取余,取模默穴。 a / b = c 余 d怔檩,就說a % b = d。 運算順序:先算乘除取余蓄诽、再算加減薛训,有小括號先算小括號。
正常情況是數(shù)字與數(shù)字之間的運算直接得出結(jié)果仑氛,但有另外兩種非正常情況:
-
有特殊值字面量參與的運算乙埃。
NaN參與的運算:得到的結(jié)果都是NaN闸英;
Infinity參與的運算,視情況而定介袜。 -
其他類型的數(shù)據(jù)參與數(shù)學運算甫何。
有字符串參與的 + 運算:+ 號變?yōu)檫B字符將前后連接成整體字符串。
隱式轉(zhuǎn)換:除了字符串參與的 + 運算米酬,其他情況下沛豌,所有其他數(shù)據(jù)類型參與數(shù)學運算時,計算機暗中將其他數(shù)據(jù)類型先自動轉(zhuǎn)換成數(shù)字類型赃额,再參與運算,這個過程中不需要使用parseInt()叫确、Number() 等方法跳芳,過程是暗中進行,這就是一個隱式轉(zhuǎn)換的過程竹勉。
? 對應數(shù)字:純數(shù)字字符串會轉(zhuǎn)為對應的數(shù)字”123”→123
? 轉(zhuǎn)換為1: true
? 轉(zhuǎn)換為0:false飞盆、null、“”空字符串次乓、空白字符串
? 轉(zhuǎn)換為NaN:undefined吓歇、非空非純數(shù)字字符串
比較運算符
比較運算符也叫作關(guān)系運算符。一個比較運算符 comparison operator 比較它的操作數(shù)并返回一個布爾類型值票腰。運算結(jié)果要么是true城看,要么是false。
符號 | 說明 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 相等杏慰,只判斷值大小是否相等测柠,不判斷數(shù)據(jù)類型 |
!= | 不等,與相等完全相反 |
=== | 全等缘滥,不光判斷值相等轰胁,還要判斷數(shù)據(jù)類型相等 |
!== | 不全等,與全等于完全相反 |
正常情況是數(shù)字與數(shù)字之間的比較直接得出結(jié)果朝扼,但有另外三種非正常情況:
-
特殊值參與比較運算
? NaN參與:不等于和不全等于結(jié)果是 true赃阀,其他的都得到 false。
? Infinity參與的運算擎颖,視情況而定榛斯。 -
其他數(shù)據(jù)類型參與比較運算(排除字符串與字符串的比較)
? 其他數(shù)據(jù)類型也會隱式轉(zhuǎn)換為數(shù)字參與比較〕σ牵“123”→123肖抱、 true→1、 false→0异旧、 null→0意述、 undefined→NaN、 “”→0 、“abc”→NaN荤崇。
? null 的判斷比較特殊:null 與 0 判斷時拌屏,相等判斷為 false;>= 和 <= 判斷為 true术荤;null == undefined倚喂。 -
字符串與字符串比較
? 不會發(fā)生隱式轉(zhuǎn)換為數(shù)字,而是比較兩個字符串的 Unicode 編碼順序瓣戚。
? 字符編碼順序:從前往后 0-9端圈,A-Z,a-z子库,前面的小于后面的舱权。
? 比較時,不關(guān)心兩個字符串的長度仑嗅,從第一個字符開始比較宴倍,依次往后順延比較,直到比較出大小仓技,就不再往后比較鸵贬。
邏輯運算符
邏輯運算符常用于布爾類型值之間; 當操作數(shù)都是布爾值時,返回值也是布爾值脖捻。
符號 | 說明 |
---|---|
&& |
邏輯與運算符 (同真才真阔逼,一假則假) |
|| |
邏輯或運算符(同假才假,一真則真) |
! |
邏輯非運算符 |
布爾類型的值參與運算郭变,返回值為布爾值颜价。
除了布爾類型的值之外,其他數(shù)據(jù)類型的值也可以參與邏輯運算诉濒。運算過程中需要將操作數(shù)隱式轉(zhuǎn)換為布爾類型的值周伦,參與判斷計算,最終運算結(jié)果還是原來的某個位置的數(shù)據(jù)未荒。并不是所有邏輯運算返回結(jié)果都是布爾值专挪,其他數(shù)據(jù)參與得到的就是數(shù)據(jù)本身。
-
隱式轉(zhuǎn)換為布爾值的規(guī)律
轉(zhuǎn)為false:NaN片排、0寨腔、“”空字符串、null率寡、undefined
轉(zhuǎn)為true:非0 非NaN數(shù)字迫卢、非空字符串
當它們用于非布爾值的時候,返回值就可能是非布爾值冶共。其實這種運算非常簡單乾蛤,就兩句話:(邏輯與 a&&b ) 如果a能被轉(zhuǎn)換為false每界,那么返回a;否則家卖,返回b眨层。(邏輯或 a ||b ) 如果a能被轉(zhuǎn)換為true,那么返回a上荡;否則趴樱,返回b。
同種運算符從前往后運算酪捡。綜合運算順序:非叁征、與、或逛薇。
賦值運算符
賦值運算符必須有變量參與運算航揉,賦值運算符會做兩件事情:
第一,將變量中原始值參與對應數(shù)學運算金刁,與右側(cè)的數(shù)據(jù)。
第二议薪,將運算結(jié)果再重新賦值給變量尤蛮。
變量位于操作符的左側(cè)。
符號 | 說明 |
---|---|
= | 等于 |
+= | 加等于 |
-= | 減等于 |
*= | 乘等于 |
/= | 除等于 |
%= | 取余等于 |
++ | 遞加 |
-- | 遞減 |
一元運算符
++
和 --
也叫一元運算符斯议,只有一個操作數(shù)产捞。
++
或 --
符號可以寫在變量前和變量后面,位置不同可能導致程序運行結(jié)果不同哼御。
以 ++
為例:
- a++:
++
符號在變量之后坯临,a++ 在參與程序過程中使用的原始沒有加 1 的值,使用完后第二次用 a 變量時恋昼,a 用的就是加 1 后的新值看靠。先參與,后自加液肌。 - ++a:
++
符號在變量之前挟炬,++a 在參與過程中整體就使用 a 加 1 之后的新值,使用完后第二次用 a 變量時嗦哆,a 用的也是加 1 的新值谤祖。先自加,后參與老速。
運算符優(yōu)先級
運算優(yōu)先級也可以叫綜合運算順序粥喜。
優(yōu)先級從高到低:
- () 優(yōu)先級最高
- 一元運算符 ++ -- !
- 算數(shù)運算符 先* / % 后 + -
- 關(guān)系運算符 > >= < <=
- 相等運算符 == != === !==
- 邏輯運算符 先&& 后||
- 賦值運算符