也许这是一个愚蠢的问题,但我找不到答案。假设我们有这样的代码:
function makeFunc() {
var name = 'Billy';
var unusedVariable = 'unused';
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
据我所知,在这个例子中,如果没有对它的引用,将收集变量name
,因此它将在闭包myFunc
存在时生效。但unusedVariable
会在myFunc
生活时生活吗?换句话说,即使它未使用,displayName()'也会“捕获”此unusedVariable
吗?
答案 0 :(得分:1)
是肯定的。无论是否使用,在“makeFunc”范围内创建的所有变量都将存在于闭包中。确切地说,这就是封闭意味着什么。在“displayName”中,你可以'(不是“必须”)引用这两个变量。