運算符:
運算符也叫操作符
通過運算符可以對一個或多個值進行運算,并獲取運算結(jié)果
比如:typeof就是運算符,可以來獲得一個值的類型,它會將該值的類型以字符串的形式返回
"number" "string" "boolean" "undefined" "object"
算數(shù)運算符
當對非Number類型的值進行運算時,會將這些值轉(zhuǎn)換為Number然后在運算
任何值和NaN做運算都得NaN
+
+可以對兩個值進行加法運算,并將結(jié)果返回
如果對兩個字符串進行加法運算,則會做拼串,會將兩個字符串拼接為一個字符串,并返回
任何的值和字符串做加法運算,都會先轉(zhuǎn)換為字符串,然后再和字符串做拼串的操作
-
- 可以對兩個值進行減法運算,并將結(jié)果返回
*
* 可以對兩個值進行乘法運算
/
/ 可以對兩個值進行除法運算
%
% 取模運算(取余數(shù))
任何值和字符串相加都會轉(zhuǎn)換為字符串,并做拼串操作
我們可以利用這一特點,來將一個任意的數(shù)據(jù)類型轉(zhuǎn)換為String
我們只需要為任意的數(shù)據(jù)類型 + 一個 "" 即可將其轉(zhuǎn)換為String
這是一種隱式的類型轉(zhuǎn)換,由瀏覽器自動完成,實際上它也是調(diào)用String()函數(shù)
任何值做- * /運算時都會自動轉(zhuǎn)換為Number
我們可以利用這一特點做隱式的類型轉(zhuǎn)換
可以通過為一個值 -0 *1 /1來將其轉(zhuǎn)換為Number
原理和Number()函數(shù)一樣,使用起來更加簡單
一元運算符:
一元運算符,只需要一個操作數(shù)
+ 正號
- 正號不會對數(shù)字產(chǎn)生任何影響
- 負號
- 負號可以對數(shù)字進行符號的取反
- 對于非Number類型的值,它會將先轉(zhuǎn)換為Number,然后再運算
- 可以對一個其他的數(shù)據(jù)類型使用+,來將其轉(zhuǎn)換為number,它的原理和Number()函數(shù)一樣
自增 ++
- 通過自增可以使變量在自身的基礎(chǔ)上增加1
- 對于一個變量自增以后,原變量的值會立即自增1
- 自增分成兩種:后++(a++) 和 前++(++a)
無論是a++還是++a,都會立即使原變量的值自增1
不同的是a++和++a的值不同
a++的值等于原變量的值(自增前的值)
++a的值等于新值 (自增后的值)
自減 --
- 通過自減可以使變量在自身的基礎(chǔ)上減1
- 自減分成兩種:后--(a--) 和 前--(--a)
無論是a--還是--a都會立即使原變量的值自減1
不同的是a-- 和 --a的值不同
a-- 是變量的原值 (自減前的值)
--a 是變量的新值 (自減以后的值)
邏輯運算符:
JS中為我們提供了三種邏輯運算符
! 非
- !可以用來對一個值進行非運算
- 所謂非運算就是值對一個布爾值進行取反操作,
true變false,false變true
- 如果對一個值進行兩次取反,它不會變化
- 如果對非布爾值進行元素,則會將其轉(zhuǎn)換為布爾值,然后再取反
所以我們可以利用該特點,來將一個其他的數(shù)據(jù)類型轉(zhuǎn)換為布爾值
可以為一個任意數(shù)據(jù)類型取兩次反,來將其轉(zhuǎn)換為布爾值,原理和Boolean()函數(shù)一樣
&& 與
- &&可以對符號兩側(cè)的值進行與運算并返回結(jié)果
- 運算規(guī)則
- 兩個值中只要有一個值為false就返回false,
只有兩個值都為true時,才會返回true
- JS中的“與”屬于短路的與,
如果第一個值為false,則不會看第二個值
|| 或
- ||可以對符號兩側(cè)的值進行或運算并返回結(jié)果
- 運算規(guī)則:
- 兩個值中只要有一個true,就返回true
如果兩個值都為false,才返回false
- JS中的“或”屬于短路的或
如果第一個值為true,則不會檢查第二個值
與或運算:
&& || 非布爾值的情況
- 對于非布爾值進行與或運算時,會先將其轉(zhuǎn)換為布爾值,然后再運算,并且返回原值
- 與運算:
- 如果第一個值為true,則必然返回第二個值
- 如果第一個值為false,則直接返回第一個值
- 或運算
- 如果第一個值為true,則直接返回第一個值
- 如果第一個值為false,則返回第二個值
賦值運算符:
可以將符號右側(cè)的值賦值給符號左側(cè)的變量
關(guān)系運算符:
通過關(guān)系運算符可以比較兩個值之間的大小關(guān)系,
如果關(guān)系成立它會返回true,如果關(guān)系不成立則返回false
> 大于號
- 判斷符號左側(cè)的值是否大于右側(cè)的值
- 如果關(guān)系成立,返回true,如果關(guān)系不成立則返回false
>= 大于等于
- 判斷符號左側(cè)的值是否大于或等于右側(cè)的值
< 小于號
<= 小于等于
非數(shù)值的情況
- 對于非數(shù)值進行比較時,會將其轉(zhuǎn)換為數(shù)字然后再比較
- 如果符號兩側(cè)的值都是字符串時,不會將其轉(zhuǎn)換為數(shù)字進行比較,而會分別比較字符串中字符的Unicode編碼