不可变数据之Immutable

本文探讨了JavaScript中的可变数据及其问题,引出了Immutable.js的重要性。Immutable.js通过提供不可变数据结构,如List和Map,解决了状态改变带来的问题。它采用结构共享,减少了不必要的内存消耗和CPU开销。文章介绍了常用数据类型、转换方法以及如何操作不可变数据,如get、set、delete和merge等。
摘要由CSDN通过智能技术生成

在讲不可变数据(Immutable Data)前,先说说可变数据(Mutable Data),在原生js中创建的数据都是可变的,如:

    var a = {qty:1}
    a.qty = 10;

可能有小伙伴说,可以用const啊,const对基本数据类型还行,但对引用数据类型根本没辙,如

    const a = {qty:1}
    a.qty = 10;
​
    a.qty;// 10

如果把对象a赋值给其它变量还会导致新的问题,如:

     const a = {qty:1}
     const b = a;
​
    a.qty = 10;
​
    b.qty;//10

这时你会发现,修改了a,b的值也跟着改了,这其实是js采用引用赋值的方式来实现数据共享的,好处就是节省内存,但缺点也显而易见,稍微不注意就会导致改A坏B的棘手问题,在复杂的项目中,这种问题还不易排查,有诸多安全隐患。

之前的做法是,利用深拷贝的方式来解决这个问题,虽然问题解决了,但又会引发新的问题:浪费内存,还有对一些需要频繁更新数据又有高性能要求的场景(如:React),深拷贝实则为一个不明智的操作,于是,Imutable.js的出现就是要解决这些开发痛点的。

Immutable.js 由Facebook 工程师 Lee Byron 花费 3 年时间打造,在js中的引用赋值可以节省内存࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值