JS中的數據類型。什麼是數據類型?
和我們平時交流一樣一樣。
什麼是漢字,什麼是拼音,什麼是標點符號,什麼又是現在流行的表情包?類型,可以是語言的分類,也一定是理解一門語言或瞭解一個事物的基礎。
JavaScript中的每一個“值”,都是一種數據,屬於一種數據類型。
我們常用的數據類型,有六種:
-
number
:數值,包括整數與小數 -
string
:字符串,理解爲文本 -
boolean
:布爾值,只有兩個值:true
和false
,分別表示真假 -
undefined
:未定義或不存在 -
null
:空值,此處爲空 -
object
:對象,各種值的集合
在ES6中引入了第七種類型的值:symbol
數值、字符串和布爾值一般被稱爲原始類型,是最基礎的類型;對象被稱爲合成類型,是比較複雜的類型。undefined
和null
是特殊的值。
數值
JavaScript的數值有許多種表示類型。
常規的十進制:首數字不爲0。 520
二進制:前綴爲0b
或0B
。 0b101
八進制:前綴爲0o
或0O
。 0o363
十六進制:前綴爲0x
或0X
。 0xdd
科學計數法:字母e或E後面接整數表示指數部分。314e-3
NaN
是一種特殊的數值,表示"非數字"。
字符串
字符串就是排在一起的多個字符,用英文雙引號"
或單引號'
表示。
雙引號內部可以引用單引號,單引號內部也可以引用雙引號。
當引號使用出現歧義時,比如單引號中的單引號,雙引號中的雙引號,就要用到轉義
。
反斜槓 \
可以用來表示一些特殊字符,被稱爲轉義符
。
常見的轉義符有:
-
\n
:換行符 -
\t
:製表符 -
\r
:回車鍵 -
\b
:後退鍵 -
\'
:單引號 -
\"
:雙引號 -
\\
:反斜槓
null 和 undefined
對於null
和undefined
,都可以表示沒有,含義相似。這也與歷史上JavaScript的設計有關。
大致可以像下面這樣理解。
null
表示空值,即該處的值現在爲空。
比如調用函數時,某個參數未設置任何值,這時就可以傳入null
,表示該參數爲空。
undeined
則表示此處未定義,不存在。
布爾值
true
爲真,false
爲假。
布爾值運算關係有 “與”:&&
和 “或”:||
,真值關係符合標準真值表。
對象
這是JavaScript中最核心的概念,也是最複雜的數據類型。
對象就是一組“鍵值對”即key-value
的集合,是一種無序
的複合數據集合。
var obj= {
k1 : "My",
k2 : "Love",
k3 : 18,
k4 : undefined,
k5 : {k6 : "998"}
};
每一個鍵值對用逗號,
隔開。
冒號左邊爲鍵名,默認爲字符串,加不加引號都可以。
但若鍵名不符合標識名規則,則必須加上引號,否則會報錯。 "3+4"
"678xyz"
對象的每一個鍵名又稱爲“屬性”,它的“鍵值”可以是任何數據類型。如果一個屬性的值爲函數,通常把這個屬性稱爲“方法”,它可以像函數那樣調用。
讀取對象的屬性,有兩種方法,一種是使用點運算符,還有一種是使用方括號運算符。
obj.k1;
obj["k1"];
如果使用方括號運算符,鍵名必須放在引號裏面,否則會被當作變量處理。
這種方法不僅可以用來讀取值,還可以用來賦值。
var obj = {};
obj.k1 = "998";
obj["k2"] = undefined;
可以使用Object.keys
來查看一個對象本身的所有屬性。
var obj = {
k1 : "uux",
k2 : 18
};
Object.keys(obj);
//["k1","k2"]
可以用delete
命令刪除對象的屬性,刪除成功後返回true
。
var obj = {
k1 : "123",
k2 : "234"
};
delete obj.k1; //true
obj.k1; //undefined
Object.keys(obj); //["k2"]
in
用於檢查對象是否包含某個屬性,如果包含就返回true,否則返回false。
var obj = {};
"k1" in obj; //false
for...in
循環用來遍歷一個對象的全部屬性。
var obj = {
k1 : "Male",
k2 : 18,
k3 : undefined
};
for (var i in obj) {
console.log("Key:", i);
console.log("Value:", obj[i]);
}
// Key:k1
// Value:"Male"
// Key:k2
// Value:18
// Key:k3
// Value:undefined
typeof運算符
typeof
運算符可以返回一個值的數據類型。
typeof 998; //"number"
typeof "998"; //"string"
typeof true; //"boolean"
typeof undefined; //"undefined"
typeof {}; //"object"
var a = {};
typeof a; //"object"
特例:
function xxx() {};
typeof xxx; //"function"
函數返回function
,但是我們要注意並沒有function
這一數據類型。
typeof null; //"object"
這只是一個BUG,是由歷史原因造成的。
typeof []; //"object"
空數組的類型也是object
。
typeof document; //"object"
typeof window; //"object"
...
參考文獻:《JavaScript教程——阮一峯》