JavaScript Day 2
JavaScript Day 2
強制型別轉換
String
- 呼叫被轉換資料型別的函式(比如toString(),[null和undefined沒有toString方法])
- 呼叫String函式
Number
- 呼叫Number函式(規則:空串、null或空格串為0,布林值為0|1,不能轉或undefined則為NaN)
- parseInt()(非string先呼叫toString)
- parseFloat()
Boolean
- 呼叫Boolean()
其他進製表示
- 十六進位制:0x
- 八進位制:0
- 二進位制:0b
- 十進位制:--
算術運算子
運算子也稱為操作符
通過運算子可以對一個或多個值進行運算或操作
-
typeof運算子
用來檢查一個變數的資料型別
語法:typeof 變數
它會返回一個用於描述型別的字串作為結果 -
算數運算子
+ +對兩個值進行加法運算並返回結果
- -對兩個值進行減法運算並返回結果
* *對兩個值進行乘法運算並返回結果
* / 對兩個值進行除法運算並返回結果
* % 對兩個值進行取餘運算並返回結果
除了加法以外,對非Number型別的值進行運算時,都會先轉換為Number然後在做運算。
而做加法運算時,如果是兩個字串進行相加,則會做拼串操作,將兩個字元連線為一個字串。
任何值和字串做加法,都會先轉換為字串,然後再拼串
一元運算子(一元運算子只需要一個運算元)
-
自增
自增可以使變數在原值的基礎上自增1
自增使用 ++
自增可以使用 前++(++a)後++(a++)
無論是++a 還是 a++都會立即使原變數自增1
不同的是++a和a++的值是不同的,
++a的值是變數的新值(自增後的值)
a++的值是變數的原值(自增前的值) -
自減
自減可以使變數在原值的基礎上自減1
自減使用
自減可以使用 前(a)後(a)
無論是a 還是 a都會立即使原變數自減1
不同的是a和a的值是不同的,
a的值是變數的新值(自減後的值)
a的值是變數的原值(自減前的值)
邏輯運算子
-
!
非運算可以對一個布林值進行取反,true變false false邊true
當對非布林值使用!時,會先將其轉換為布林值然後再取反
我們可以利用!來將其他的資料型別轉換為布林值 -
&&
&&可以對符號兩側的值進行與運算
只有兩端的值都為true時,才會返回true。只要有一個false就會返回false。
與是一個短路的與,如果第一個值是false,則不再檢查第二個值
對於非布林值,它會將其轉換為布林值然後做運算,並返回原值
規則:
1.如果第一個值為false,則返回第一個值
2.如果第一個值為true,則返回第二個值 -
||
||可以對符號兩側的值進行或運算
只有兩端都是false時,才會返回false。只要有一個true,就會返回true。
或是一個短路的或,如果第一個值是true,則不再檢查第二個值
對於非布林值,它會將其轉換為布林值然後做運算,並返回原值
規則:
1.如果第一個值為true,則返回第一個值
2.如果第一個值為false,則返回第二個值
賦值運算子
-
=
可以將符號右側的值賦值給左側變數 -
+=
a += 5 相當於 a = a+5 var str = "hello"; str += "world";
關係運算符
關係運算符用來比較兩個值之間的大小關係的
>
>=
<
<=
關係運算符的規則和數學中一致,用來比較兩個值之間的關係,
如果關係成立則返回true,關係不成立則返回false。
如果比較的兩個值是非數值,會將其轉換為Number然後再比較。
如果比較的兩個值都是字串,此時會比較字串的Unicode編碼,而不會轉換為Number。
相等運算子
相等,判斷左右兩個值是否相等,如果相等返回true,如果不等返回false
相等會自動對兩個值進行型別轉換,如果對不同的型別進行比較,會將其轉換為相同的型別然後再比較,轉換後相等它也會返回true,null == undifined
!=
不等,判斷左右兩個值是否不等,如果不等則返回true,如果相等則返回false
不等也會做自動的型別轉換。
===
全等,判斷左右兩個值是否全等,它和相等類似,只不過它不會進行自動的型別轉換,
如果兩個值的型別不同,則直接返回false
!==
不全等,和不等類似,但是它不會進行自動的型別轉換,如果兩個值的型別不同,它會直接返回true
特殊的值:
null和undefined
由於undefined衍生自null,所以null == undefined 會返回true。
但是 null === undefined 會返回false。
NaN
NaN不與任何值相等,報告它自身 NaN == NaN //false
判斷一個值是否是NaN
使用isNaN()函式
三元運算子:
?:
語法:條件表示式?語句1:語句2;
執行流程:
先對條件表示式求值判斷,
如果判斷結果為true,則執行語句1,並返回執行結果
如果判斷結果為false,則執行語句2,並返回執行結果
優先順序:
和數學中一樣,JS中的運算子也是具有優先順序的,
比如 先乘除 後加減 先與 後或
具體的優先順序可以參考優先順序的表格,在表格中越靠上的優先順序越高,
優先順序越高的越優先計算,優先順序相同的,從左往右計算。
優先順序不需要記憶,如果越到拿不準的,使用()來改變優先順序。