关闭完整概述

时间:2013-04-13 08:08:01

标签: javascript

只有函数调用闭包,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

2 个答案:

答案 0 :(得分:2)

您没有在该代码中的任何位置使用闭包。您只是返回一个具有某些属性的对象,然后使用该对象。属性值来自函数参数的事实并不重要。

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

答案 1 :(得分:1)

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

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

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

以下是闭包的示例:

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

你会像这样使用它;

var func = getCalcFunction(1, 3);
alert(func());    // alerts 4