React(77)--纯函数和非纯函数

Posted 小歌谣(公众号同名)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React(77)--纯函数和非纯函数相关的知识,希望对你有一定的参考价值。

let student = {
    firstName: "testing",
    lastName: "testing",
    marks: 500
}

// 非纯函数
function appendAddress() {
    student.address = {streetNumber:"0000", streetName: "first", city:"somecity"};
}

console.log(appendAddress());

// 纯函数
function appendAddress(student) {
    let copystudent = Object.assign({}, student);
    copystudent.address = {streetNumber:"0000", streetName: "first", city:"somecity"};
    return copystudent;
}

console.log(appendAddress(student));

console.log(student);

纯函数是始终接受一个或多个参数并计算参数并返回数据或函数的函数。 它没有副作用,例如设置全局状态,更改应用程序状态,它总是将参数视为不可变数据。

我想使用 appendAddress 的函数向student对象添加一个地址。 如果使用非纯函数,它没有参数,直接更改 student 对象来更改全局状态。

使用纯函数,它接受参数,基于参数计算,返回一个新对象而不修改参数。


 

以上是关于React(77)--纯函数和非纯函数的主要内容,如果未能解决你的问题,请参考以下文章

React Reducer真的应该是一个纯函数吗?

java 设计模式 -- 责任链模式

[译] 如何在React中写出更优秀的代码

一起了解下Python函数式编程

JavaScript使用纯函数避免bug

纯函数介绍