数据类型的种类(七种)
基本数据类型(或者叫原始类型,英文:primivates)
- null
- undefined
- number
- boolean
- string
- symbol
引用数据类型(英文:reference type)
- Object
- function
- Date
- RegExp
- array
数据类型在计算机里的存储形式
除 Object 以外的所有类型都是不可变的(值本身无法被改变)。例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”。
在计算机科学中, 对象是指内存中的可以被 标识符引用的一块区域.
不可变的原始类型,可变的对象引用
对于JavaScript,基本数据类型和引用数据类型存在根本的区别。
- 基本数据类型是不可更改的。
- 基本数据类型的比较是原始值的比较。只有在他们相等的时候才相等。
如
var a = 1, b = 1;
console.log(a === b); // true
- 引用数据类型是可变的—他们的值是可以修改的:
var o = { x:1 }; // 定义一个对象
o.x = 2; // 通过修改属性值来更改对象
o.y = 3; // 增加一个新属性
var a = [1, 2, 3,]; // 数组也是可以修改的
a[0] = 0; // 修改
a[3] = 4; // 增加
- 引用数据类型的比较并不是值的比较,而是引用的比较。即便对象的key, value或者数组的索引元素完全相同,引用数据是不相等的,只有指向同一个引用的引用数据类型的比较是相等的。
var objA = { a: 1 }, objB = { a: 1 };
console.log(objA === objB); // => false
var arra = [1, 2], arrb = [1, 2];
console.log(arra === arrb); // => false
var arrc = [1, 2];
var arrd = arrc;
console.log(arrc === arrd); // => true
arrd[3] = 0;
console.log(arrc[3]); // => 0
引用数据类型
对于引用数据类型,将对象(或数组)赋值给一个变量,仅仅是赋值的引用值,并没有复制对象本身。如果想要得到一个对象的副本,则要显示的复制对象的每个属性或者数组。
// 通过循环复制数组
var a = [1, 2, 3];
var b = [];
for (let i = 0; i < a.length; i++){
b[i] = a[i];
}
另外, 如果想要比较对象或者数组是否相同,可以通过循环判断每一个值
function equalArrays(arrayA, arrayB){
let a = arrayA,
b = arrayB;
if (a.length !== b.length) return false;
for (let i = 0; i < a.length; i++){
if(a[i] !== b[i]) return false;
};
return true;
}
对于== 和 === 的使用
可以参照
JavaScript 中应该用 "==" 还是 "==="? - 贺师俊的回答 - 知
本文内容转载自:JavaScript权威指南第六版