iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
0
Modern Web

教練我想學 JavaScript 系列 第 9

Day 9 JavaScript 型別裡的純值

讓我們來講講另一個概念
型別和 JavaScript
Javascript 很特殊,不同於其他你可能正在使用的程式語言
特別是在變數的資料和型別的部分
以及 JavaScript 處理它們的方式

我先說明一個描述 JavaScript 處理型別方式的名詞
它叫做「動態型別」
意思是你不需要告訴 JavaScript
你的變數是何種型別的資料
你不需要在程式裡寫出來
相反地,它會在執行程式時自動知道
所以當你執行程式時,一個變數可以在不同時候
擁有不同型別,因為型別都是在執行時才知道的
例如,你在其他程式語言
像是 Java 或 C#, 它們用一個叫做「靜態型別」的方式處理
這代表你必須在一開始就告訴編譯器你的變數是什麼資料型別
所以你可能會有一個關鍵字,
像是「 bool 」去表示這個變數的型別是布林,可能是 True 或 False
如果你將其他型別的值放進這個變數
就會得到 error

圖片來源:JavaScript 全攻略:克服 JS 的奇怪部分課程第 3 節講座 19 影片截圖

但 JavaScript 不是這樣 JavaScript 是動態型別的
代表沒有關鍵字宣告變數的型別
例如,我們只宣告 var(變數),然後當程式執行時
它會依據你指派給變數的值決定要給這個變數什麼型別
你也可以更改型別
我可以寫這三行程式碼,而沒有錯誤

圖片來源:JavaScript 全攻略:克服 JS 的奇怪部分課程第 3 節講座 19 影片截圖

這時候它會知道
這時候你是要布林型別
而 'yep' 就是字串型別
然後我在給變數1的值 它就會知道這是數值型別
所以 JavaScript 是動態型別的, 在執行時它會自動判斷變數型別
這是相當強大的
但如果你不瞭解 JavaScript 如何處理動態型別 它也可能會造成一些問題

純值(Primitive Types)

在我們深入瞭解動態型別如何運作和其優缺點之前
我們需要講一些 JavaScript 的型別
你可以存進變數的資料型別
再說一次,在 JavaScript 中你不需要直接宣告變數型別
但 JavaScript 有六種純值(primitive types,或稱基本型別)

純值是什麼意思?
純值是一種資料的型別 表示一個值
換句話說, 不是物件
因為請記得, 物件是名稱/值配對的組合
而基本型別,只是一個值
再說一次, JavaScript 有六種基本型別
讓我一一說明這些純值

第一種純值是undefined.
我們之前或多或少講過它
undefined 表示還不存在
這是 JavaScript 給所有變數的初始值
它會一直是 undefined 直到你給定變數一個值
所以你不應該用它來設定值
你不應該設定一個變數等於 undefined.
這會表示還為設定任何值
但你可以測試看看

第二種純值是 null.
null 也表示不存在
但這個比較適合給你使用,來表示一個東西不存在
變數沒有值
所以別用 undefined 你可以用 ull

第3種是 Boolean.
程式設計師都很熟悉
這是對或錯 其中一種可能
在 JavaScript 直接用 true 或 false 表示,

第四種純值是 Number
在 JavaScript, 其實只有一種數值型態 叫作 Number.
它是浮點數 表示一定有小數點跟在後面
不像其他程式語言,可能有整數型態或其他特定的數值型態 JavaScript只有一種
你可以假裝這是整數和其他數字型別
但其實叫作 Number
這是一個浮點數
這會讓數學有點奇怪
在 JavaScript 中數值的運算時常容易與預期不一樣,要非常小心

第五種型別是 String
這是另一個 JavaScript 中的純值
這是一連串的字符所組成 單引號和雙引號都可以來表示字串
在某些程式語言 處理字串會比一連串的字符更複雜
但在 JavaScript, 字串被視為純值

最後第六種是 Symbol
這是在 ES6 新推出的純值
ES6 已經非常廣泛的被使用.
Symbol 的部份可參考此連結

這就是 JavaScript 的六種純值(基本型別)
undefined, null, Boolean, Number, String, 和 Symbol.

我們需要先瞭解純值
還有知道要處理的是動態型別
這表示它會立刻知道變數的型別
這是瞭解JavaScript的關鍵


上一篇
Day 8 關於非同步回呼
下一篇
Day 10 運算子
系列文
教練我想學 JavaScript 30

尚未有邦友留言

立即登入留言