淺談JS中的數據類型

JS中的數據類型。什麼是數據類型?

和我們平時交流一樣一樣。
什麼是漢字,什麼是拼音,什麼是標點符號,什麼又是現在流行的表情包?類型,可以是語言的分類,也一定是理解一門語言或瞭解一個事物的基礎。

JavaScript中的每一個“值”,都是一種數據,屬於一種數據類型。
我們常用的數據類型,有六種:

  • number:數值,包括整數與小數
  • string:字符串,理解爲文本
  • boolean:布爾值,只有兩個值:truefalse,分別表示真假
  • undefined:未定義或不存在
  • null:空值,此處爲空
  • object:對象,各種值的集合

在ES6中引入了第七種類型的值:symbol

數值、字符串和布爾值一般被稱爲原始類型,是最基礎的類型;對象被稱爲合成類型,是比較複雜的類型。undefinednull是特殊的值。

數值

JavaScript的數值有許多種表示類型。

常規的十進制:首數字不爲0。 520
二進制:前綴爲0b0B0b101
八進制:前綴爲0o0O0o363
十六進制:前綴爲0x0X0xdd
科學計數法:字母e或E後面接整數表示指數部分。314e-3

NaN是一種特殊的數值,表示"非數字"。

字符串

字符串就是排在一起的多個字符,用英文雙引號"或單引號'表示。

雙引號內部可以引用單引號,單引號內部也可以引用雙引號。
當引號使用出現歧義時,比如單引號中的單引號,雙引號中的雙引號,就要用到轉義
反斜槓 \ 可以用來表示一些特殊字符,被稱爲轉義符

常見的轉義符有:

  • \n:換行符
  • \t:製表符
  • \r:回車鍵
  • \b:後退鍵
  • \':單引號
  • \":雙引號
  • \\:反斜槓

null 和 undefined

對於nullundefined,都可以表示沒有,含義相似。這也與歷史上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教程——阮一峯》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章