高级函数

函数

函数声明与函数表达式的区别:

  1. 写法不同;

  2. 名称标识符将会绑定在何处,函数表达式是可以匿名的,而函数声明则不可以省略函数名。

  3. 变量提升。函数声明会被整体提升,而函数表达式只会提升变量,预设为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

定义:在计算机科学中,局部应用是指固定一个函数的一些参数,然后产生另一个更小元的函数。

元:指函数参数的个数,比如带有两个参数的函数被成为二元函数。

与柯里化的区别

更多阅读

JavaScript 高阶函数浅析