# 基本型態

# 數字

在 JS 的世界裡,所有的數字都是標準 64 位元浮點數

# 進位制

進位制開頭備註
十進位預設
十六進位0x0 ~ 9,A ~ F
八進位0o0~7
二進位0b0~1
> 10
10
> 0xA
10
> 0o12
10
> 0b1010
10
>

# 科學記號

> 5.231e13
52310000000000
> 1.31e-32
1.31e-32
>

# 極限值

# 浮點數

> Number.MIN_VALUE
5e-324
> Number.MAX_VALUE
1.7976931348623157e+308

# 整數

整數表示時,整數的範圍落在 253 與 -253 之間,不包括其本身。
使用 Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER 可以安全得到最大、最小值。
使用 Number.isSafeInteger() 可以檢測是否為安全整數 , Number.isInteger() 可以檢測是否為整數。

> Number.MAX_SAFE_INTEGER
9007199254740991
> Number.MIN_SAFE_INTEGER
-9007199254740991
> Number.isSafeInteger(9007199254740992)
false
> Number.isSafeInteger(9007199254740991)
true
> Number.isInteger(9007199254740992)
true

# typeof

> typeof 10
'number'

# 字串

# 引號

如果想要標示字串,可以用 ''"" 包括文字,兩者具相同效用。兩者可以互換達到字串中又有引號的效果。

> "Zrn 'Ye'"
"Zrn 'Ye'"
> 'Zrn "Ye"'
'Zrn "Ye"'

# 跳脫字元

亦可使用跳脫字元,進行轉譯

常見符號效果常見符號效果
\\\\0空字元
\''\n換行
\""\r歸位
`| \t` | Tab |

# 進位相關跳脫字元

常見符號效果備註
\xhh兩位 16 進制指定字碼點例 '\x41' 表示 'A'
\uhhhh四位 16 進制指定字碼點例 '\u54C8\u56C9' 表示 ' 哈囉'
\u{...}可表示超過 U+FFFF 的碼點例 '\u {1D11E}' 表示 𝄞

# typeof

> typeof 'A'
'string'

# 布林

只有兩個值 truefalse

# typeof

> typeof true
`boolean`

# 複合型態

# 物件實字

> let man = { name: 'Zrn Ye', age: 17 }
undefined
> man.name
'Zen Ye'
> man.age
17
> man.age = 18
18
> man
{ name: 'Zrn Ye', age: 18 }
>

物件特性名稱其實是個字串,除了運用 . (dot) 操作物件外,亦可使用 [] 運算子來存取物件。類似於 C++map

> man['name']
'Zrn Ye'
> man['age'] = 17
17
>

# 新增 / 刪除物件

> man.nickname = 'master'
'master'
> man
{ name: 'Zrn Ye', age: 17, nickname: 'master' }
> delete man.nickname
true
> man
{ name: "Zrn Ye", age: 17 }

可以自由刪增物件的特行,稱為物件個性化,是個具有極大彈性的功能。

# 包裹物件

基本型態的數字、字串與布林,會在必要時,自動建立對應的包裹物件,也就是對應的實例。

> let number = 65535
undefined
> number.toExponential()
'6.5535e+4'
> (40936).toExponential(2)
'4.10e+3'
> 'caterpillar'.toUpperCase()
'CATERPILLAR'

也可以直接建立物件包裹物件,這必須使用 new 關鍵字

> typeof 10
`number`
> typeof 'caterpillar'
'string'
> typeof new Number(10)
'object'
> typeof new string('catepillar')
'object'

# 陣列與類陣列

# 使用陣列

> typeof []
`object`
> [].length
0
> let arr = [0,10,20]
undefined
> arr.length
3
> arr[0]
0
> arr[0] = 100
100
> arr
[ 100 , 10 , 20]

運用 length 可以得知陣列的長度

指定的索引值若超過陣列範圍,不會發生錯誤,你甚至可以指定他的值

> arr[3] = 30
30
> arr
[ 100 , 10 , 20 , 30 ]
> arr.length = 8
8
> arr
[100 , 10 , 20 ,30 , <4 empty items> ]
> arr[5]
undefined

雖然可以直接改變 length 的值,但極度不建議那麼做,應避免產生空項目。

此外,Javascript 的陣列可以不只是陣列,他同時也可以是 List、Queue、Stack 之類的資料結構。

# 類陣列

在 JS 世界裡,類陣列佔有重要地位,它具有 length 特性及數字特性名稱的物件,許多場合上都用的到。

> let like = {'0':10 , '1':20 , length : 2}
undefined
> like
{'0':10 , '1':20 , length : 2}
> Array.form(like)
[ 10 , 20 ]
> Array.form('Zrn')
[ 'Z' , 'r' , 'n' ]

從 ES5 開始,字串本身就是一種類陣列,但是字串內容無法變動
指定索引取得的值是一個碼元,而非字元

# 參考資料

JavaScript 技術手冊

更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay