1、纯函数
-
定义:一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数
-
作用:对于代码的安全性和可用性会更方便
为什么要煞费苦心地构建纯函数?
因为纯函数非常“靠谱”,执行一个纯函数你不用担心它会干什么坏事,它不会产生不可预料的行为,也不会对外部产生影响。不管何时何地,你给它什么它就会乖乖地吐出什么。如果你的应用程序大多数函数都是由纯函数组成,那么你的程序测试、调试起来会非常方便。
-
实现:
// 一个函数的返回结果 只依赖于参数,且不会有其它副作用 let a = 1; function test1(b) { // 不是纯函数,依赖了外部参数 // 外部参数一旦改变,返回结果就会不一样 // 肯下一次 test1(1)的值就不为 2了 return a + b } function test2(a, b) { // 不是纯函数,依赖了外部参数,外部采纳数一旦改变,返回结果就会不一样 return a + b } console.log(test1(1)); // 2 console.log(test2(1, 1)); // 2
2、高阶函数
-
高阶函数(Higher-Order Functions)定义:函数作为其参数或者返回值为函数的函数被称为高阶函数
-
作用:在调用函数的时候不需要考虑内部是如何实现的,十分的灵活
-
实现:数组的 map、filter、find...等等
3、惰性函数
-
定义:惰性函数,即只在第一次执行,第 n 次执行后再调用得到的结果都是一样的
-
作用:只需要执行一次就缓存值,提升执行效率
-
实现:
// 解决一:普通方法 // 弊端:会产生全局变量,每次都要判断 let date; function foo() { if (date) return date; else { return date = new Date(); } }
// 解决二:闭包 var foo = (function () { let date; return function () { if (date) return date; else { return date = new Date(); } } }())
4、偏函数
-
定义:就是当函数的参数太多的时候,需要简化,这个函数可以固定住原来的参数的部分参数
-
作用:简化参数量
-
实现:
function add(a, b = 2) { console.log(a + b); } add(1) add(12)
关注公众号:前端兔 查看更多前端知识分享~~