函数式编程
QA 环节
-
说说你对闭包的理解 🔗
Details
参考回答
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念闭包有三个特性:
- 函数嵌套函数
- 函数内部可以引用外部的参数和变量
- 参数和变量不会被垃圾回收机制回收
-
什么是函数式编程? JavaScript 的哪些特性使其成为函数式语言的候选语言?🔗
参考回答
- 函数式编程是一种编程范式也是一种思维模式
- 函数式编程中的函数指的是数学中的函数-映射关系
x = f(y)
- 相同的输入得到相同的输出就是纯函数
- 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));