이 기사는 JavaScript 함수형 프로그래밍의 순수 함수(코드)에 대한 이해를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
함수형 프로그래밍에서 순수 함수를 이해하려면?
개념: 실행 컨텍스트에 의존하지 않으며 컨텍스트의 변수에 영향을 주지도 않습니다. 출력은 입력에 의해서만 결정됩니다.
코드를 이해하세요
// 综上,非纯函数,输入依赖外部变量 let b = 1 function unPure(a) { return a + b } // 综上,非纯函数,输出改变外部变量 let o = {} function unPure(object) { object.ex = 1 return object } // 综上, 纯函数, 输出输入不影响外部变量 function pure(a) { let b = 1 return a + b }
찾으실 거라 믿습니다. 개념도 코드 이해도 매우 간단한데 왜 순수함수를 사용할까요? 아래에는 순수 함수 사용의 이점이 나열되어 있습니다
순수 함수는 입력을 기반으로 캐시될 수 있습니다
// 下面的代码我们可以发现相同的输入,再第二次调用的时候都是直接取的缓存 let squareNumber = memoize((x) => { return x*x; }); squareNumber(4); //=> 16 squareNumber(4); // 从缓存中读取输入值为 4 的结果 //=> 16 squareNumber(5); //=> 25 squareNumber(5); // 从缓存中读取输入值为 5 的结果 //=> 25
어떻게 구현할까요? 아래 코드를 살펴보세요
const memoize = (f) => { const cache = {}; return () => { var arg_str = JSON.stringify(arguments); // 关键就在这里,我们利用纯函数相同输入相同输出的逻辑,在这里利用cache做一个简单的缓存,当这个参数之前使用过时,我们立即返回结果就行 cache[arg_str] = cache[arg_str] || f.apply(f, arguments); return cache[arg_str]; }; };
일반 언어로 이식성은 프로젝트 A에서 사용했다면 프로젝트 B에서 사용하고 싶다면 그냥 가져오면 됩니다
코드를 다시 이해합시다
// 我们注意看下方有两个注册的函数 // 不纯的, 如果B项目想要用到这个函数,很显然我们将其依赖的其它服务给搬过去 const signUp = function(attrs) { var user = saveUser(attrs); welcomeUser(user); } // 纯的, 我们再来看看下面这个纯函数写法,纯函数给了我们足够多的信息,我们想在B项目使用其功能只需将单个方法搬过去再给其注入需要的参数即可 const signUp = function(Db, Email, attrs) { return function() { var user = saveUser(Db, attrs); welcomeUser(Email, user); }; };
요컨대, 이것은 매우 간단합니다. 다른 외부 정보는 신경 쓸 필요가 없습니다. 함수에 특정 입력을 제공하고 출력을 주장하면 됩니다.
위 내용은 JavaScript 함수형 프로그래밍(코드)의 순수 함수 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!