1.执行上下文
let i = 0;
function wrap() {
var a = "a";
i++;
if(i<5){
wrap()
}
}
wrap()
递归调用,同时在同一个作用域中产生了多个执行上下文。
2.鸡肋闭包
function wrap() {
var a = "a";
function inner() {
console.log(a)
}
inner()
}
wrap()
在wrap没有销毁前就将闭包交给了inner,实际上,没有闭包此代码也可以执行。
3.经典闭包
function wrap() {
var a = "a";
return function () {
console.log(a)
}
}
var inner = wrap()
在wrap销毁以后,将闭包交给了inner,在调用inner的时候,闭包起作用了。
本文深入探讨JavaScript中的执行上下文和闭包概念。通过三个示例,展示了递归调用如何在同一作用域内创建多个执行上下文,分析了无用闭包的场景以及经典闭包在函数销毁后的持久作用。理解这些概念对于提升JavaScript编程能力至关重要。
208

被折叠的 条评论
为什么被折叠?



