-4

只是函数调用闭包,因为下面代码中的对象也像闭包一样。

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
4

2 回答 2

2

您没有在该代码的任何地方使用闭包。您只是返回一个具有某些属性的对象,然后使用该对象。属性值来自函数参数这一事实无关紧要。

您依赖于 JavaScript 的自动内存管理,但所有 JavaScript 代码依赖于它。这并不意味着您正在使用闭包。

于 2013-04-13T08:14:16.497 回答
1

由于您传入的值在函数范围内,是的,它们是闭包的一部分。

您正在使用该时间点的这些值创建对象。

编辑:在您的示例中,您并没有真正使用闭包。

下面是一个闭包的例子:

function getCalcFunction(a, b){
    return function() {
         a + b;
    };
}

你会像这样使用它;

var func = getCalcFunction(1, 3);
alert(func());    // alerts 4
于 2013-04-13T08:11:01.097 回答