JS基本数据类型和引用数据类型的区别

定义:

基本数据类型: Number、String、Boolean、Null、 Undefined

引用数据类型: 函数、数组、正则等除了基本数据类型以外的数据

基本数据类型

基本数据类型是指存放在栈中的简单数据段,数据大小确定,定义后值不可更改,假如更改需要先销毁原来的值,而字符串的修改实际上并没有修改,而是去返回一个新的值。
举个栗子:

var a=2;   //2赋值给a
a=3;      //将a原有的值销毁,重新把3赋值给a

var s ="hello";
s.toUpperCase();//返回HELLO,这是一个新的字符串,和原来的s无关
alert(s)//hello

引用数据类型

存放在堆内存中的对象,大小可更改,对象比较比较的是引用地址,所以即使两个对象包含相同属性和相同值,也是不相等的。只有他们引用同一个对象时,才相等。

举个栗子:

var o={
    
    x:1},p={
    
    x:1};
o===p    //false,因为这两是不一样的对象,地址不一样

var a=[];   //a指向一个空数组
var b=a;   //此时b中存放原数组的地址,所以a和b此时指向是一样的
b[0]=1;   
alert(a[0]);
a===b;   //true,因为a和b引用的是同一地址,所以a,b相等

综合:

var a = [1,2,3,4,5];
var b = a;//传址 ,(数组是引用类型)对象中传给变量的数据是引用类型的,会存储在堆中;
var c = a[0];//传值,把对象中的属性/数组中的数组项赋值给变量,这时变量C是基本数据类型,存储在栈内存中;改变栈中的数据不会影响堆中的数据
alert(b);//1,2,3,4,5
alert(c);//1
//改变数值 
b[4] = 6;
c = 7;
alert(a[4]);//6
alert(a[0]);//1

猜你喜欢

转载自blog.csdn.net/weixin_42898315/article/details/111243691