#不可变数据

#不可变数据是什么

就是值类型

js 的值类型包括:

  • String
  • Number
  • Boolean
  • null
  • undefined
  • Symbol
  • BigInt

js 的引用类型包括:

  • Object

引用类型可以修改,所以是可变数据

如:

const a = {
  name: 'xiuyan',
  age: 30,
}

const b = a

b.name = 'youhu'

#为什么要不可变数据

  • 会让数据无法预测,有安全问题
  • 函数复用成本变高

#怎么使用不可变数据

控制变化,确保所有的变化都在可预期的范围内发生

不要修改,要拷贝,如 deppClone

但是大数据拷贝有性能问题

#Immutable.js

数据共享

将变与不变分离,只新记录变化

1

使用字典树实现

#Immer.js

使用 Proxy