Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 存储状态中的每个对象都应该是不可变的吗?_Javascript_Reactjs_Immutability_Flux_Immutable.js - Fatal编程技术网

Javascript 存储状态中的每个对象都应该是不可变的吗?

Javascript 存储状态中的每个对象都应该是不可变的吗?,javascript,reactjs,immutability,flux,immutable.js,Javascript,Reactjs,Immutability,Flux,Immutable.js,我正在学习React.js和Flux,我知道最好保持对象不变,因为比较它们是O(1) 我的情况是:我有一个存储,它有一个\u state对象,这是一个映射(我使用的是不可变的js)。那个\u state有一些布尔值、一些字符串和一个数组。 数组有对象,它们都是不可变的映射 问题是,我应该使用不可变列表而不是数组吗?好处是什么?我不会将这个数组与另一个数组进行比较 谢谢你的阅读 这取决于对象的设计。如果要向列表中添加元素并处理返回的新不可变集合,则需要不可变列表。否则,请使用重量较轻的阵列 所以这

我正在学习React.js和Flux,我知道最好保持对象不变,因为比较它们是O(1)

我的情况是:我有一个存储,它有一个
\u state
对象,这是一个映射(我使用的是不可变的js)。那个
\u state
有一些布尔值、一些字符串和一个数组。 数组有对象,它们都是不可变的映射

问题是,我应该使用不可变列表而不是数组吗?好处是什么?我不会将这个数组与另一个数组进行比较


谢谢你的阅读

这取决于对象的设计。如果要向列表中添加元素并处理返回的新不可变集合,则需要不可变列表。否则,请使用重量较轻的阵列


所以这更多的是一个问题:你是否需要不可变的列表;如果不是,则使用数组来减轻重量。

“因为比较它们是O(1)。”-不,这当然不是使用不变性的原因。@Bergi我甚至不确定它是否是O(1),这是我在阅读React文档()后的假设。无论如何,docs强调的是不变性,这是一个廉价的比较。如果您能给我推荐一份更好地理解不变性的参考资料,我将不胜感激。