不可变数据结构有哪些常见用途?

What are some common uses of immutable data structures?

是什么促使越来越多地使用不可变数据结构,例如 ImmutableJS 和 SeamlessJS 中提供的数据结构?

我知道有调试和记忆的好处。 我对 JavaScript 堆栈中的用途很感兴趣,但我也在考虑更容易处理或推理的常见前端任务。

至少有三个好处:

  • 不管是前端还是后端工作,都可以simplify your logic and work process significantly。如果应用程序存在错误,那么您可以排除的任何因素(包括对某些逻辑上不可变的数据结构的无意修改)都会有所帮助。

  • 当您克隆包含它们的对象时,它可以 improve runtime performance

  • 我怀疑这些特定的库是否真的使用了它,但不可变数据结构有时可以有更好的实现。哈希表可以利用perfect hashing,平衡树可以用有序数组代替