只有函数调用闭包,becoz在下面的代码对象中也起作用 就像关闭一样。
function makePerson(first, last) {
return {
first: first,
last: last
}
}
function personFullName(person) {
return person.first + ' ' + person.last;
}
s = makePerson("Simon", "Willison");
personFullName(s); //output is: Willison, Simon
答案 0 :(得分:2)
您没有在该代码中的任何位置使用闭包。您只是返回一个具有某些属性的对象,然后使用该对象。属性值来自函数参数的事实并不重要。
依赖于JavaScript的自动内存管理,但所有JavaScript代码都依赖于此。这并不意味着你正在使用一个闭包。
答案 1 :(得分:1)
由于您传入的值在函数范围内,因此它们是闭包的一部分。
您正在该时间点使用这些值创建对象。
编辑:在你的例子中,你并没有真正使用闭包。
以下是闭包的示例:
function getCalcFunction(a, b){
return function() {
a + b;
};
}
你会像这样使用它;
var func = getCalcFunction(1, 3);
alert(func()); // alerts 4