JavaScript的數據類型可以分為兩種:基本數據類型和引用數據類型。它們在使用、存儲方式、傳遞方式和處理方式等方面有所不同。
基本數據類型包括Number、String、Boolean、null和undefined。Number類型可以表示任意數字,包括整數和浮點數;String類型表示任意字符集合,可以用單引號、雙引號或反引號表示;Boolean類型只有兩個值true和false;null是一個表示“空”的特殊值,表示一個空對象;undefined表示一個未定義或不存在的變量。
// 基本數據類型的聲明和初始化 var num = 123; var str = 'abc'; var bool = true; var empty = null; var undef = undefined;
引用數據類型包括Object、Array和Function。Object類型是JavaScript中最基本的數據類型,它表示一個復雜的數據結構,包含多個屬性和方法;Array類型表示一個數組,它可以包含任意多個元素,每個元素可以是任意類型的數據;Function類型可以表示一個函數,它可以接受參數并返回結果。
// 引用數據類型的聲明和初始化 var obj = { name: 'Jack', age: 18 }; var arr = [1, 'a', true]; var func = function(x, y) { return x + y; };
基本數據類型和引用數據類型在賦值、傳遞和比較時有所不同。基本數據類型的賦值是直接復制存儲的數值,而引用數據類型的賦值則是復制存儲的引用地址。例如:
var a = 123; var b = a; a = 456; console.log(b); // 輸出123 var obj1 = { name: 'Jack', age: 18 }; var obj2 = obj1; obj1.age = 20; console.log(obj2.age); // 輸出20
在函數傳遞參數時,基本數據類型是值傳遞,即傳遞的是數值的副本,而引用數據類型則是引用傳遞,即傳遞的是地址的副本。例如:
function changeNum(num) { num = 456; } var a = 123; changeNum(a); console.log(a); // 輸出123 function changeObj(obj) { obj.age = 20; } var o = { name: 'Jack', age: 18 }; changeObj(o); console.log(o.age); // 輸出20
在比較數據類型時,基本數據類型可以用==、!=、===、!==等運算符進行比較,引用數據類型的比較則要考慮是否指向同一個對象。例如:
console.log(123 == '123'); // 輸出true console.log(123 === '123'); // 輸出false var obj1 = { name: 'Jack', age: 18 }; var obj2 = { name: 'Jack', age: 18 }; console.log(obj1 == obj2); // 輸出false console.log(obj1 === obj2); // 輸出false var obj3 = obj1; console.log(obj1 == obj3); // 輸出true console.log(obj1 === obj3); // 輸出true
在JavaScript中,基本數據類型和引用數據類型都有其獨特的特點和用處,我們需要根據具體情況進行選擇和使用。