c语言sscanf函数的用法是什么
268
2022-09-27
纯函数介绍
纯函数是一种函数。这种函数不依赖外部环境的状态,若输入的参数相同,返回的结果也永远相同,并且执行过程中无任副作用。副作用就是执行中与函数外部环 境发生的交互,如发起HTTP请求,操作 DOM,修改外部数据,打印log等。
例子
非纯函数:
//(1) add依赖了外部变量a。如果a变化,返回也 会变化,add(2)并不永远输出3。let a = 1;function add(b) { return a + b;}console.log(add(2)); // 3 //(2)执行过程中修改了外部数据a,产生了副作 用。let a = 1;function change() { a = 'b';}console.log(a);//b
纯函数:
//输入2永远返回3,也没有与外部环境产生副作用。function add(b) { let a = 1; return a + b;}console.log(add(2)); // 3
实际应用中:
很多数组函数如map,forEach都是纯函数。 redux中的reducer也是纯函数,接收先前的state和action,并返回新的state。
纯函数的好处:
(1)可缓存(利用memorize技术),节省计算资源。
//纯函数function add(b) { let a = 1; return a + b;}// memorize,传入的fn为纯函数 const memoize = (fn)=>{ const cache = {}; return () =>{ var arg = JSON.stringify(arguments); //若参数首次传入则执行纯函数,将参数和结 果保存至缓存cache。 //若参数之前使用过就直接返回缓存中的结 果。 cache[arg] = cache[arg] || fn.apply(fn, arguments); console.log(cache[arg]) return cache[arg]; }}let add_new = memoize(add); add_new(3) //4add_new(3) //4 (第二次从缓存中读取)
(2)便于测试,重构和移植。
由于不依赖外部环境,无需配置外部不同状态,测试简便。
由于没有副作用,重构一个纯函数时无需担心影响外部环境。
由于独立性,可以随意移植到别的项目。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~