JavaScript運(yùn)算符
- 和數(shù)學(xué)的運(yùn)算符一樣,JavaScript中的運(yùn)算符是告訴程序執(zhí)行特定算術(shù)或邏輯操作的符號(hào)
- 表達(dá)式:利用運(yùn)算符鏈接在一起的
有意義,有結(jié)果
的語句
運(yùn)算符分類
- 按功能分類
- 算數(shù)運(yùn)算符
- 位運(yùn)算符
- 關(guān)系運(yùn)算符
- 邏輯運(yùn)算符
- 根據(jù)參與運(yùn)算的操作數(shù)的個(gè)數(shù)分類
- 單目運(yùn)算
- 雙目運(yùn)算
- 三目運(yùn)算
算數(shù)運(yùn)算符
+ - * / %
-
算數(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
- * / % 優(yōu)先級(jí)高于+ -
- 無論是+ - * / %都是左結(jié)合性(從左至右計(jì)算)
-
算數(shù)運(yùn)算符注意點(diǎn)
- 加法
- 任何非數(shù)值類型的數(shù)據(jù)在參與加法運(yùn)算之前,都會(huì)被自動(dòng)的轉(zhuǎn)換成數(shù)值類型之后,再參與運(yùn)算
- 任何數(shù)據(jù)和NaN進(jìn)行運(yùn)算,結(jié)果都是NaN
- 任何數(shù)據(jù)和字符串相加,都會(huì)先被轉(zhuǎn)換成字符串之后再運(yùn)算
- 減法
- 前兩點(diǎn)與加法相同(非數(shù)值和NaN)
- 任何數(shù)據(jù)和字符串相減,都會(huì)先把字符串轉(zhuǎn)換成數(shù)值類型之后再運(yùn)算
- 乘法和除法與減法一模一樣
- 取模(取余)
- 格式:m%n = 余數(shù)
- 如果m>n,那么正常取余
- 如果m<n,那么結(jié)果是m
- 如果n是0,那么結(jié)果是NaN
- 取余運(yùn)算結(jié)果的正負(fù)形取決于m
- 加法
賦值運(yùn)算符和自增自減
-
賦值運(yùn)算符
= += -= *= /= %=
其中復(fù)雜的賦值運(yùn)算符是將等號(hào)左邊存儲(chǔ)的值取出來和右邊進(jìn)行指定的運(yùn)算,運(yùn)算完畢之后再將運(yùn)算的結(jié)果存儲(chǔ)到左邊
-
賦值運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
- 賦值運(yùn)算符的優(yōu)先級(jí)低于算數(shù)運(yùn)算符
- 賦值運(yùn)算符的結(jié)合性是右結(jié)合性(從右至左的計(jì)算)
- 賦值運(yùn)算符的左邊只能放變量,不能放常量
-
自增自減運(yùn)算符
++ --
可以快速的對(duì)一個(gè)變量中保存的數(shù)據(jù)進(jìn)行+1或者-1操作
寫在變量后面,表示變量先參與其他的運(yùn)算,然后再自增或者自減
寫在變量前面,表示變量先自增或者自減,然后再參與其他的運(yùn)算
-
自增自減注意點(diǎn)
- 只能出現(xiàn)在變量的前面或者后面,不能出現(xiàn)在常量或者表達(dá)式的前面或者后面
- 在企業(yè)開發(fā)中自增自減運(yùn)算符最好單獨(dú)出現(xiàn),不要出現(xiàn)在表達(dá)式中
關(guān)系運(yùn)算符
> < >= <= == != === !==
關(guān)系運(yùn)算符的返回值只有true和false
-
關(guān)系運(yùn)算符注意點(diǎn)
對(duì)于非數(shù)值類型的數(shù)據(jù),會(huì)先轉(zhuǎn)換成數(shù)值類型,再進(jìn)行判斷
任何數(shù)據(jù)和NaN進(jìn)行比較,返回值都是false
-
如果參與比較的都是字符串類型,那么不會(huì)轉(zhuǎn)換成數(shù)值類型再比較,而是直接比較字符對(duì)應(yīng)的unicode編碼,如果字符串中有多個(gè)字符,那么會(huì)從左至右依次比較,直到條件不滿足為止
企業(yè)開發(fā)中,如果想判斷一個(gè)數(shù)據(jù)是否是NaN那么可以通過
isNaN
來進(jìn)行判斷==和!=只會(huì)判斷取值,===和!==不僅會(huì)判斷取值還會(huì)判斷數(shù)據(jù)類型
-
關(guān)系運(yùn)算符的結(jié)合性和優(yōu)先級(jí)
- 關(guān)系運(yùn)算符都是左結(jié)合性(從左至右的運(yùn)算),所以不能用來判斷區(qū)間
- 關(guān)系運(yùn)算符中> < >= <=的優(yōu)先級(jí)高于== != === !==
邏輯運(yùn)算符
- 邏輯與 &&
- 格式: 條件表達(dá)式A && 條件表達(dá)式B
- 返回值:true false
- 特定:一假則假
- 邏輯或 ||
- 格式: 條件表達(dá)式A || 條件表達(dá)式B
- 返回值:true false
- 特點(diǎn):一真則真
- 邏輯非 !
- 格式: !條件表達(dá)式
- 返回值:true false
- 特點(diǎn):真變假,假變真
- 邏輯運(yùn)算符的優(yōu)先級(jí)和結(jié)合性
- 邏輯運(yùn)算符是左結(jié)合性(從左至右的運(yùn)算)
- 在邏輯運(yùn)算中&&的優(yōu)先級(jí)高于||
- 邏輯運(yùn)算符的注意點(diǎn)
- 在邏輯運(yùn)算中如果不是布爾類型,那么會(huì)先轉(zhuǎn)換成布爾類型,再參與其他的運(yùn)算
- 在邏輯與運(yùn)算中,如果參與運(yùn)算的不是布爾類型,返回值有一個(gè)特點(diǎn)
- 條件A && 條件B
- 如果條件不A成立,那么就返回條件A
- 如果條件A成立,無論條件B是否成立,都會(huì)返回條件B
- 短路現(xiàn)象:由于邏輯與運(yùn)算的規(guī)則是一假則假,所以只要條件A是假,那么條件B就不會(huì)運(yùn)算
- 在邏輯或運(yùn)算中,如果參與運(yùn)算的不是布爾類型,返回值有一個(gè)特點(diǎn)
- 如果條件A成立,那么久返回條件A
- 如果條件A不成立,無論條件B是否成立,都會(huì)返回條件B
- 段路現(xiàn)象:由于邏輯或運(yùn)算的規(guī)則是一真則真,所以只要條件A是真,條件B就不會(huì)運(yùn)算
逗號(hào)運(yùn)算符
- 在JavaScript中逗號(hào)運(yùn)算符一般用于簡化代碼
- 逗號(hào)運(yùn)算符優(yōu)先級(jí)和結(jié)合性
- 逗號(hào)運(yùn)算符的結(jié)合性是左結(jié)合性(從左至右的運(yùn)算)
- 逗號(hào)運(yùn)算符的優(yōu)先級(jí)是所有運(yùn)算符中最低的
- 逗號(hào)運(yùn)算符的運(yùn)算結(jié)果就是最后一個(gè)表達(dá)式的結(jié)果
三目運(yùn)算符
- 三目運(yùn)算符又稱之為條件運(yùn)算符
- 格式: 條件表達(dá)式 ? 結(jié)果A : 結(jié)果B;
- 在三目運(yùn)算符中,當(dāng)條件為真的時(shí)候,就會(huì)返回結(jié)果A
- 在三目運(yùn)算符中,當(dāng)條件為假的時(shí)候,就會(huì)返回結(jié)果B
- 在三目運(yùn)算符中? :不能單獨(dú)出現(xiàn),要么一起出現(xiàn),要么一起不出現(xiàn)