我一直在更深入地研究编程中的闭包概念,特别是与JavaScript相关的部分。虽然我已经写了多年的JavaScript代码,但我还没有完全理解它与我所写的JavaScript代码有何不同。我也理解递归的概念,但我想知道,闭包和递归有什么相似之处?我是否正确地理解,递归本身就是一种闭包类型?
闭包:
闭包:
function init() {
var name = "Stack Overflow";
function displayName() {
alert(name);
}
displayName();
}
init();
递归:
function factorial(num) {
if(num < 0)
return -1;
else if(num == 0)
return 1;
else
return (num * factorial(num - 1));
}
alert(factorial(8));
我觉得我开始理解闭包只是在一个函数内部再定义一个函数,并通过作用域使内部函数可以访问外部函数。是否可能有递归闭包?我的递归示例并不完全是闭包的示例,但它至少能发生吗?我试图理解递归和闭包如何相似、不同或者它们是否可以比较。也许有一些例子可以描述这个问题吗?