iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
1
自我挑戰組

語法改革!零基礎新手也能讀懂的JS!系列 第 3

Day03 語法改革!零基礎新手也能讀懂的JS - 變數資料型別(下)

  • 分享至 

  • xImage
  •  

在上篇提及了JS的變數及基本的資料型別,如果還沒看過上篇的新手們建議先回去看喔!
Day02資料型別(上)
那麼我們就繼續看還有哪些資料型別吧!

Number 數字

在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無法轉成字串

boolean 布林值

別擔心,就是單純的 TrueFalse
通常用在判斷式來控制流程你也可以直接指定變數為TrueFalse

var a = true // 正常執行

null 與 underfined

共通點為nullunderfined都各只有一種值,就是本身。而且兩者透過Boolean()轉型的時候都代表false,但還是稍有差別。

  • underfined 代表此變數還沒有值,所以不知道是啥
  • null代表可能曾經有值可能沒有,但現在沒有值

但如果用Number() 轉型就可以知道雙方的差別了

Number( null ) // 0
Number( underfined ) // NaN

前面介紹了判斷NaN的方式,這邊也提一下在JS該如何判斷型別:使用typeof

typeof  true;         // 'boolean'
typeof  'CK';         // 'string'
typeof  123;          // 'number'
typeof  { };          // 'object'
typeof  [ ];          // 'object'

這次大概是這樣子,大家明天見!

上一篇
Day02 語法改革!零基礎新手也能讀懂的JS - 變數資料型別(上)
下一篇
Day04 語法改革!零基礎新手也能讀懂的JS - 物件與陣列
系列文
語法改革!零基礎新手也能讀懂的JS!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言