JavaScript基本数据类型和引用数据类型

数据类型的种类(七种)

基本数据类型(或者叫原始类型,英文:primivates)

  • null
  • undefined
  • number
  • boolean
  • string
  • symbol

引用数据类型(英文:reference type)

  • Object
  • function
  • Date
  • RegExp
  • array

数据类型在计算机里的存储形式

除 Object 以外的所有类型都是不可变的(值本身无法被改变)。例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”。
在计算机科学中, 对象是指内存中的可以被 标识符引用的一块区域.

不可变的原始类型,可变的对象引用

对于JavaScript,基本数据类型和引用数据类型存在根本的区别。

  1. 基本数据类型是不可更改的。
  2. 基本数据类型的比较是原始值的比较。只有在他们相等的时候才相等。
 var a = 1, b = 1;
 console.log(a === b); // true
  1. 引用数据类型是可变的—他们的值是可以修改的:
var o = { x:1 };    // 定义一个对象
o.x = 2; 			// 通过修改属性值来更改对象
o.y = 3; 			// 增加一个新属性

var a = [1, 2, 3,]; // 数组也是可以修改的
a[0] = 0;			// 修改
a[3] = 4;			// 增加
  1. 引用数据类型的比较并不是值的比较,而是引用的比较。即便对象的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权威指南第六版

猜你喜欢

转载自blog.csdn.net/weixin_43154931/article/details/82750601
今日推荐