闭包与递归
相同点:
1.两者都是函数的应用方式
2.在函数内部中都有调用函数
不同点:
1.闭包调用内部的函数时需要引用外部的变量或参数,而递归不需要
2.闭包自身只调用一次后便结束调用,而递归则是在满足递归条件下反复调用自身
3.闭包对内存消耗更大,更加占用内存空间,而递归在使用不当的情况下容易出现栈溢出
闭包例子
二维数组中的行转列
let arr = [
["前端", "3人", "8-15k", "本科"],
["后端", "5人", "10-25k", "研究生"],
["UI", "2人", "9-11k", "大专"],
["ETL工程师", "10人", "6-12k", "大专"],
];
let newArr = arr[0].map((col, ind) => {
return arr.map((row) => {
return row[ind];
});
});
递归例子
菲波那契数列的第N项和: F(N) = F(N-1) + F(N-2) {N>=2}
function recursive(N) {
if (N == 0 || N == 1) {
return 1;
} else {
return recursive(N - 1) + recursive(N - 2);
}
}
标签:闭包,arr,调用,return,recursive,递归,前端,概念,必会
From: https://www.cnblogs.com/yiheng-orange/p/16733760.html