在上篇提及了JS的變數及基本的資料型別,如果還沒看過上篇的新手們建議先回去看喔!
Day02資料型別(上)
那麼我們就繼續看還有哪些資料型別吧!
在JS裡只有一種數值型別,不管是整數還是浮點數都屬於Number的型別
除了這幾種之外,還有讓我很頭大的幾個特殊的數字例如:
Infinity(無限大)、-Infinity(負無限大)、以及NaN(不是數值,Not a Number)
至於為什麼頭大你等等就會了解到了...
JS的奧妙就在於新手永遠都猜不到答案會是什麼...我們用幾個例子來看一下就知道了...
正數 ÷ 0 得到 Infinity ( 好像很合理
負數 ÷ 0 得到 -Infinity ( 好像很合理
0 ÷ 0 得到 NaN ( 這是啥...?居然不是零?
Infinity ÷ Infinity 得到 NaN ( 為什麼也不是數字????
-Infinity ÷ -Infinity 得到 NaN ( 同上
任何數字和NaN做運算都會得到NaN ( 又回歸正常了...
如果用typeof看型別,他又說NaN是數字...(WT..X!)
typeof(NaN) //得到number
更神奇的是
NaN === NaN //得到false
NaN 不等於任何數字甚字不等於自己...( 是不是在懷疑人生了?
但在這邊先補充一下關於JS的等於=
這件事情
一個=
=> 給某變數一個值
兩個==
=> 比較的意思,但會自動轉換型別
三個===
=> 也是比較的意思,但不會轉換型別
意思是
console.log(1 == '1') // 得到true 因為JS會自動將字串1轉型成數字
console.log(1 === '1') // 得到false 因為三個等於不會轉換型別
那你可能會問那到底該如何檢查出是不是NaN? 別擔心,JS有提供isNaN(value)
來判斷
isNaN(NaN) // true
isNaN(123) // false
isNaN("123") // false,因為字串會被隱含的Number() 轉型
isNaN("NaN") // true 因為NaN無法轉成字串
別擔心,就是單純的 True
與 False
了
通常用在判斷式來控制流程你也可以直接指定變數為True
或False
var a = true // 正常執行
共通點為null
與underfined
都各只有一種值,就是本身。而且兩者透過Boolean()轉型的時候都代表false,但還是稍有差別。
但如果用Number() 轉型就可以知道雙方的差別了
Number( null ) // 0
Number( underfined ) // NaN
前面介紹了判斷NaN的方式,這邊也提一下在JS該如何判斷型別:使用typeof
typeof true; // 'boolean'
typeof 'CK'; // 'string'
typeof 123; // 'number'
typeof { }; // 'object'
typeof [ ]; // 'object'
這次大概是這樣子,大家明天見!