我认为一旦上下文不再存在,变量就会被破坏:
function foo () {
let bar = "something"
return bar
}
就像在这个例子中一样,我认为bar
在函数执行后就被破坏了。
但是现在,我发现你可以用Javascript写这个:
function foo () {
let bar = "something"
return {
print () {
console.log(bar)
}
}
}
let f = foo()
f.print();
此代码打印“某事”。所以我现在想知道javascript如何处理它的内存。为什么bar
在函数结束时不会被销毁?
现在,如果我写下这样的话:
function foo () {
let bar = "something"
let hugeVar = _.range(1,1000*1000*1000*1000) // A huge array
return {
print () {
console.log(bar)
}
}
}
hugeVar
是否还在内存中? Javascript如何决定保留什么以及不保留什么?
答案 0 :(得分:0)
它叫做封闭。函数将记住对外部作用域中变量的引用。阅读更多信息。
答案 1 :(得分:0)