跳到主要内容

函数式编程

QA 环节

  • 说说你对闭包的理解 🔗

    Details

    参考回答 使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念

    闭包有三个特性:

    1. 函数嵌套函数
    2. 函数内部可以引用外部的参数和变量
    3. 参数和变量不会被垃圾回收机制回收
  • 什么是函数式编程? JavaScript 的哪些特性使其成为函数式语言的候选语言?🔗

    参考回答
    1. 函数式编程是一种编程范式也是一种思维模式
    2. 函数式编程中的函数指的是数学中的函数-映射关系x = f(y)
    3. 相同的输入得到相同的输出就是纯函数
    4. JS支持闭包和高阶函数是函数式编程的特点
  • 为什么函数被称为一等公民?🔗

    Details

    参考回答 函数可以被当做参数传递给其他函数,可以作为另一个函数的返回值,还可以被赋值给一个变量

  • 什么是高阶函数?🔗

    Details

    参考回答 将函数作为参数或返回值的函数

代码理解

  • 使用闭包实现加法器

    参考回答
    function add(...args) {
    const getSum = (a, b, c) => a + b + c;
    if (args.length === getSum.length) return getSum(...args);

    return function addFun() {
    return add(...args.concat(Array.from(arguments)));
    };
    }

    console.log(add(1, 2, 3));
    console.log(add(1, 2)(3));
    console.log(add(1)(2)(3));