2019年12月29日 星期日

JS學習:基礎資料型別


布林值:Boolean

布林是用來表示真偽的資料型別,只有 True 和 False 兩個值,如果宣告一個布林型態變數,但是沒有賦予值的話,此時的值會是 False 



數字:Int、Number

int 是 32 位元用來處理「有符號」的整數型數值,範圍從 -2 的 31次方 ~ 2 的 32次方減1,因為有一個位元需要用來標記正負,因此不是 32次方

有些語言會有類似 uint 來處理「無符號」的整數型數值,範圍從 0 ~ 2的 32次方減1

Number 是 64位元用來處理浮點數

除了數值本身是浮點數除外,當整數數值運算涉及到除法時,那也會建議使用浮點值


1. 能優先使用整數型變數,就盡量優先使用,因為整數型變數佔用的資源比較少

2. 整數型變數如果有正負之分,處理非負數值時,優先使用 uint 

3.涉及除法時,需考慮是否使用 Number ,因為整數值會直接將小數點後面的值捨棄

4.使用整數型變數時,需要注意邊界問題,當超過邊界時,會產生循環 (邊界最大值加一會變成邊界最小值反之亦同)

5.浮點數相加不一定能得到整數,像是 0.1 相加十次,會產生 0.999999999 ,可以使用 Math.round 來修正

6.數值差距過大的浮點數相加減的時候,結果可能會有誤差


字串:String

字串是由一串Unicode的字元所組成的,字串的長度也就是字元的個數,空格、換行等等都是一個字元,在計算長度時,也都會一併計算


陣列:Array

在JS裡陣列是以非負整數為索引的非型別化、稀疏陣列 ( sparse array ),每次的索引一定都從0開始

非型別化陣列是指說,並不強制所有在同一個陣列裡的陣列元素都要同一種型別

稀疏陣列則是說,不要求所有陣列元素都一定要有儲存值

陣列中的陣列元素也都是指向物件的引用,而非物件本身

存取的方式為 陣列變數名稱[第幾個索引] (array[0])


Object 和 關聯陣列

Object(物件)是所有資料結構的基石,包括 Array、String 等,甚至 Function、Class都是

Array是透過索引值(數字)來存取陣列元素,Object則是透過字串(名字)來存取

Object的成員有兩種:屬性 ( Property ) ,用來存放各種資料;方法 ( Method ) ,用來存放函數

成員的名字也可以稱為鍵 ( Key ) ,與該 Key 相對應的值也就是成員 ( Value )

objectVariable = { key : value }  也可以寫入函數 objectVariable = { functionName : function(){...}}

如果確切知道 Key 可以直接用點號 ( . ) 來添加或是存取,如果在程式執行時才能得知 Key 的話,則需要使用陣列運算子 ( [] ) 


多維陣列

陣列的成員除了 String 、 int 、function 等等,也可以是 Array 本身,多維陣列指的就是成員也是 Array 的陣列,也稱之為嵌套數組

如果嵌套一次,稱之為二維陣列;嵌套兩次,就是三維陣列,以此類推


變數的預設值

如果宣告變數而沒有賦值的話,預設會是 undefined ,如果宣告變數是有型態的話,會依照不同型態,給予不同的預設值

boolean 預設為 false

int、uint 預設為 0 

Number 預設為 NaN ( Not a Number ) 

String 、Array、Object 預設都是 null

沒有留言:

張貼留言

JS學習:函數進階使用技巧

代理函數物件 根據不同的條件,代理函數物件可以指向不同的函數來實現動態改變,如下: function femaleFunction() { console.log('female'); } function maleFunction() { ...