前段时间,我在this网站上发现了关于关闭的半个不错的解释。他们为我们提供了以下工厂函数看到工作闭合:Javascript - 为什么返回封闭与IIFE?
var car;
function carFactory(kind) {
var wheelCount, start;
wheelCount = 4;
start = function() {
console.log('started with ' + wheelCount + ' wheels.');
};
// Closure created here.
return (function() {
return {
make: kind,
wheels: wheelCount,
startEngine: start
};
}());
}
car = carFactory('Tesla');
// => Tesla
console.log(car.make);
// => started with 4 wheels.
car.startEngine();
为什么这个人返回的盖,即返回与他想要共享的属性的对象立即调用的函数表达式(IIFE) ?我觉得IIFE是不必要的。如果我马上返回对象,这会导致同样的结果。我错过了什么吗?
//Closure created here
return{
make: kind,
wheels: wheelCount,
startEngine: start
};
它看起来不需要我了。 – Barmar
如果IIFE接受了参数,那么它会更有意义,但即使如此,它们也可能只是封闭函数中的变量。 – Barmar