JavaScript中基本数据类型,引用数据类型的区别以及深拷贝和浅拷贝概念

1.基本数据类型

1.1基本数据类型的种类

在js中一共有六中基本数据类型,分别是

  1. String 字符串
  2. Number 数值
  3. Boolean 布尔值
  4. Null 空值
  5. Undefined 未定义
  6. Object 对象

其中String Number Boolean Null Number属于基本数据类型。

1.2基本数据类型的特点
  1. 基本数据类型在赋值时是将值本身传递给变量
let num1 = 1;
let num2 = num1;  
num2 = 2; //改变num2时不会改变num1
console.log(num1);  //1
console.log(num2);  //2
  1. 基本数据类型的值保存在栈中

2.引用数据类型

2.1引用数据类型的种类

在js中,除5种基本数据类型外,其余的都属于引用数据类型Object

2.2引用数据类型的特点
  1. 引用数据类型在赋值时传递的是保存对象数据内存的地址。
let a = [1, 2, 3];
let b = a;
b[0] = 4;
console.log(a); //[4,2,3]
console.log(b); //[4,2,3]

这里a的值也会被改变就是因为a和b保存的都是数组[1,2,3]在内存中的地址,所以更改b的值就是在更改b指向的数组对象的值,因为a和b指向同一块内存,所以改变b的值时a的值就会被改变。

let c = [];
let d = [];
console.log(c == d);  //false

这里c和d虽然都是空数组,但是输出c == d 的值却为false
这就很好的解释了引用型数据类型在赋值时传递的是指向对象数据的地址,所以c中存储的是空数组 [] 的地址,d中存储的是另一个空数组 [] 在内存中的地址,所以c和d的值不同。

深拷贝和浅拷贝

深拷贝和浅拷贝只是针对Object和Array这样的引用数据类型的

  1. 浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存,改变是会改变原对象
  2. 深拷贝会另外创造一个一模一样的新对象,新对象不跟原对象共享内存,修改新对象不会改原对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值