文章目錄
JavaScript基本類型
在編程領域中,數據類型(data type)用來將變量的值(value)進行分類,這樣在對變量的值進行數學、關係、邏輯等運算時就不會產生錯誤了。例如: 2 * 2
是合法的,2 * John
就不合法了。
JS中的基本類型分爲原始類型和對象類型兩種。
1. 原始類型:
原始類型(6種): Number、String、Boolean、Symbol、Null、Undefined
。
1.1 數值—Number
- 採用標準:不區分整數和浮點數,所有數值都用浮點數表示,採用IEEE 754標準定義的64位浮點格式。
- 整數:範圍是
-2 ^53 ~ 2^53
,有十進制,二進制(binary,以0b
爲前綴,之後的值由0~1
組成)、八進制(octal,以0o
爲前綴,之後的值由0~7
組成,注:不推薦以0爲前綴的表示法)、十六進制(hexadecimal,以0x
爲前綴,之後的值由0~9
和a~f
(10~15)組成)表示。例如:
//二進制
0b11 //合法
0b22 //不合法
//八進制
0o67 //合法
0o89 //不合法
//十六進制
0xAf //合法
0xjk //不合法
- 浮點數:數值中必須包含一個小數點,小數點後至少要有一位數字,浮點數計算可能會有誤差,對於極大或極小的數值可以用
e
表示法,例如:
//存在誤差
0.1 + 0.2 = 0.30000000000000004
//e表示法
3.14e5 //即爲314000
- 特殊數值,主要來自:全局直接量(無窮大
Infinity
、非數字NaN
)、Number對象的屬性(Number.MAX_VALUE
、Number.MIN_VALUE
等)、Math對象(Math.PI
,Math.E
等)的屬性等。
1.2 字符串—String
- 採用標準:用來表示文本,由0個或多個16位Unicode字符組成的字符序列。
- 可以使用單引號或者雙引號(效果一樣,必須成對出現),在JS代碼中經常會出現HTML字符串,由於HTML標籤中的屬性值推薦的是雙引號,所以JS字符串推薦使用單引號,例如:
let imgEl = '<img src="xxxx.jpg" title="my photo">'
- 索引從0開始,長度是字符的個數。
let str = 'Hello World'
str.length // => 11
str[0] // => 'H'
- 字符串不能直接換行,如果想拆分成多行,需要在每行的結尾添加反斜槓
\
,輸出的結果還是單行。
// 錯誤寫法
'ab
c'
//正確寫法
let str = 'multiple\
lines\
end'
str // => 'multiplelinesend'
- 轉義字符:反斜槓後加一個字符表示轉義字符,比如
\n
表示換行符,如果斜槓後面的字符沒有特殊含義,則忽略斜槓。常見轉義字符:
字符 | 含義 |
---|---|
\n |
換行 |
\\ |
斜槓 |
\' |
單引號,在用單引號表示的字符串中使用 |
\" |
雙引號,在用雙引號表示的字符串中使用 |
\xnn |
十六進制代碼表示的一個字符(其中n爲0~F)。例如,\x41 表示’A’ |
\unnnn |
十六進制代碼表示的unicode字符(其中n爲0~F)。例如,\u03a3 表示希臘字符’∑’ |
- 模板字符串(ES6新增):使用反引號(重音符,
" ` "
),裏面的變量使用${}
包裹,可以直接換行。
let name = 'cc'
name // => 'cc'
`Hello, ${name}` //=> 'Hello, cc'
1.3 布爾值—Boolean
用來表示真或假,開或關等含義。
- 只有兩種值:
true
和false
,通常用於if/else語句
中,若爲true則執行if語句中的邏輯,否則執行else裏面的邏輯。
if( status === 'open') {
console.log('Door is open');
} else {
console.log('Door is closed');
}
- 假值和真值:JS中任意值都可以轉換爲布爾值。一共6個值(
undefined、null、0、-0、NaN、""
)會被轉換成false,其他值都是true 。
1.4 字符—Symbol(ES6新增)
可用作對象的非字符串屬性,它是唯一且不可變的,例如:
let uniqueName = Symbol();
let person = {};
person[uniqueName] = 'cc';
console.log(person[uniqueName]); // => cc
(備註:後期詳細講解)
1.5 Undefined
表示未定義或不存在,只有一個值undefined。
let abc;
console.log(abc); // => undefined
console.log(abcd); //報錯,注意未賦值和未聲明的區別
let obj = {};
console.log(obj.name) // => undefined
1.6 Null
表示空值,Null類型只有一個值null。如果定義一個變量來表示一個對象的話,聲明時推薦將其設置爲null。
let obj = null;
obj = { name: 'cc'}
2. 對象類型—Object:
除了原始類型的值以外,其他都是對象。對象是鍵值對的集合,值可以是原始值,也可以是對象。例如:
//author對象:有name屬性,值爲'cc',還有age屬性,值爲100
let author = {
name: 'CC',
age: 100
}
2.1 重要的特殊對象
特殊對象: 函數 Function
、數組 Array
、日期 Date
、正則 RegExp
、全局 Global
、錯誤 Error
。
(備註:後期單獨詳細講解)
3 類型識別
可以使用typeof操作符來檢測變量的數據類型,它返回的值爲一個小寫的字符串。
變量abc的取值 | typeof abc 的結果 |
---|---|
let abc; |
'undefined' |
let abc = true; |
'boolean' |
let abc = 123; |
'number' |
let abc = 'abc'; |
'string' |
let abc = function () {}; |
'function' |
let abc = {}; //[]、null |
'object' |
let abc = Symbol(); |
'symbol' |
說明:整理自網易公開課。