高级函数
函数
函数声明与函数表达式的区别:
写法不同;
名称标识符将会绑定在何处,函数表达式是可以匿名的,而函数声明则不可以省略函数名。
变量提升。函数声明会被整体提升,而函数表达式只会提升变量,预设为undefined,然后在等待执行阶段被赋值。所以函数表达式不能在定义前被使用,而函数声明可以。
只有声明本身会被提升,而赋值或其他运行逻辑会留在原地。
在执行代码块之前,解析器会先处理函数声明,并使其在执行任何代码之前可用。所以函数声明在其被声明的代码块内的任何位置都是可见的。
函数表达式必须等到解析器执行到所在的代码行,才会真正被节是执行,即在执行流程到达时创建。
更多阅读:https://zh.javascript.info/function-expressions
常见函数概念
高阶函数
JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
最简单的高阶函数
function add(x, y, f) {
return f(x) + f(y);
}
// 调用
var x = add(-5, 6, Math.abs); // 11
console.log(x);
纯函数
- 确定的输入一定会产生确定的输出
- 函数在执行过程中,不能产生副作用
箭头函数
https://es6.ruanyifeng.com/#docs/function#%E7%AE%AD%E5%A4%B4%E5%87%BD%E6%95%B0
尾递归
https://es6.ruanyifeng.com/#docs/function#%E5%B0%BE%E8%B0%83%E7%94%A8%E4%BC%98%E5%8C%96
可组合
集合操作
偏函数
参考文章:
https://github.com/mqyqingfeng/Blog/issues/43
定义:在计算机科学中,局部应用是指固定一个函数的一些参数,然后产生另一个更小元的函数。
元:指函数参数的个数,比如带有两个参数的函数被成为二元函数。