function createFunctionWithProperty(property) {
    functionWithProperty.property = property;
    return functionWithProperty;
    function functionWithProperty() {
    }
}

var a = createFunctionWithProperty(123);
var b = createFunctionWithProperty(321);
alert(a.property + " : " + b.property);  // 123 : 321


据我所知,createFunctionWithPropertyfunctionWithProperty都是函数声明,它们在执行任何JavaScript代码之前都经过提升,解析和生成。但是,有时在调用createFunctionWithProperty函数时,functionWithProperty成为一个闭包,这是functionWithProperty函数的一个非常特殊的实例,它具有自己的属性和被关闭的变量,每个实例都不同。理论上都是如此,但是在这种情况下,我不了解事情的运作方式。任何人都无法详细说明functionWithProperty何时以及如何成为闭包。谢谢。

最佳答案

在这种情况下,它是否是函数,更不用说闭包了,您也可以这样做:

function createObjectWithProperty(property) {
    var objectWithProperty = {};
    objectWithProperty.property = property;
    return objectWithProperty;
}

var a = createObjectWithProperty(123);
var b = createObjectWithProperty(321);
alert(a.property + " : " + b.property);

关于javascript - 在这种特殊情况下,闭包如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19915896/

10-09 18:41