Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 为什么在Redux中需要纯减缩函数_Javascript_Redux - Fatal编程技术网

Javascript 为什么在Redux中需要纯减缩函数

Javascript 为什么在Redux中需要纯减缩函数,javascript,redux,Javascript,Redux,我对redux和研究这个框架还不熟悉。正如中所建议的,它需要返回新的状态对象,而不是改变以前的状态。我只是不明白这样做的目的。JS参数是按值调用的,因此更改参数不会更新原始值。那么这样做有什么意义呢 JS参数是按值调用的,因此更改参数不会更新原始值 的确,但是如果传递的值是一个对象引用(与对象一样),并且您使用该对象引用来更改对象的状态,那么它就不再是一个纯函数了 例如: 函数非纯(obj){ //修改对象状态 ++目标计数器; } var o={计数器:0}; 非纯(o); 控制台日志(o.

我对redux和研究这个框架还不熟悉。正如中所建议的,它需要返回新的状态对象,而不是改变以前的状态。我只是不明白这样做的目的。JS参数是按值调用的,因此更改参数不会更新原始值。那么这样做有什么意义呢

JS参数是按值调用的,因此更改参数不会更新原始值

的确,但是如果传递的值是一个对象引用(与对象一样),并且您使用该对象引用来更改对象的状态,那么它就不再是一个纯函数了

例如:

函数非纯(obj){
//修改对象状态
++目标计数器;
}
var o={计数器:0};
非纯(o);
控制台日志(o.计数器)
JS参数是按值调用的,因此更改参数不会更新原始值

的确,但是如果传递的值是一个对象引用(与对象一样),并且您使用该对象引用来更改对象的状态,那么它就不再是一个纯函数了

例如:

函数非纯(obj){
//修改对象状态
++目标计数器;
}
var o={计数器:0};
非纯(o);

控制台日志(o.计数器)好问题。首先,您对JavaScript的
传递值的理解并不准确。你可以参考这个问题的基本理论

因此,情况是传入的项是按值传递的。但通过值传递的项本身就是引用。从技术上讲,这就是所谓的

这就解释了,另一个问题是我们为什么要保持以前的状态

答案很简单:因为我们希望这些州可以跟踪,并且更易于管理。Redux正是帮助我们管理这一点的工具

假设有一个由几个状态组成的堆栈,如果您改变了状态本身,而不是复制并将其推到堆栈顶部。你会发现很难回到以前的状态。而且它变得不易管理,并且容易受到大型应用程序的攻击

在Redux中,每次发送操作时,我们都以一种不可变的方式处理它。这样,所有的州都处于完美的控制之下,因此我们可以穿越历史。这是我心中的禅宗


希望有帮助

好问题。首先,您对JavaScript的
传递值的理解并不准确。你可以参考这个问题的基本理论

因此,情况是传入的项是按值传递的。但通过值传递的项本身就是引用。从技术上讲,这就是所谓的

这就解释了,另一个问题是我们为什么要保持以前的状态

答案很简单:因为我们希望这些州可以跟踪,并且更易于管理。Redux正是帮助我们管理这一点的工具

假设有一个由几个状态组成的堆栈,如果您改变了状态本身,而不是复制并将其推到堆栈顶部。你会发现很难回到以前的状态。而且它变得不易管理,并且容易受到大型应用程序的攻击

在Redux中,每次发送操作时,我们都以一种不可变的方式处理它。这样,所有的州都处于完美的控制之下,因此我们可以穿越历史。这是我心中的禅宗

希望有帮助