js:理解js的基本类型和引用类型

理解js的基本类型和引用类型

1.基本类型

1.1.基本的数据类型有:undefined,boolean,number,string,null。
1.2.基本类型的变量是存放在栈内存的。

var a = "hello";  
var b = a;  
console.log(a);   // hello
console.log(b);   // hello
a = "world";   
console.log(a);   // world
console.log(b);   // hello

上述a,b为基本类型,a赋值给b时,相当于增加了一个新空间,两者互不影响。

2.引用类型

2.1.除基本数据类型外,剩下的就是引用类型了,统称为 Object 类型。细分有:Object、Array、Date、RegExp、Function等。
2.2.引用类型的值是保存在堆内存中的,栈内存保存的是指向堆内存中该对象的指针/地址。

var a = {}; // a保存了一个空对象的实例
var b = a;  // a和b都指向了这个空对象

a.name = 'hello';
console.log(a.name); // 'hello'
console.log(b.name); // 'hello'

b.age = 22;
console.log(b.age);// 22
console.log(a.age);// 22

console.log(a == b);// true

上述a,b为对象。是引用类型。a保存的只是指向它在堆内存中地址的指针,它的副本b也是指向同一个堆内存的地址的指针。所以它们改变的是同一个指向堆内存中的对象。

3.深拷贝和浅拷贝

在引用类型中,a赋值给b,即相当于a复制了一份给b,但它们实际上都是操作同一个堆内存中的对象,这种拷贝称为浅拷贝。如果要使a,b互不影响,那么这种复制称为深拷贝。深拷贝有几种实现方式,看浅拷贝和深拷贝一篇。

猜你喜欢

转载自blog.csdn.net/m0_49888984/article/details/108251288