私は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が不要なように感じます。オブジェクトをすぐに返すだけであれば、同じことになります。何か不足していますか?
//Closure created here
return{
make: kind,
wheels: wheelCount,
startEngine: start
};
それはあまりにも、私には不要になります。 – Barmar
IIFEが引数を取っていればそれは意味がありますが、それでもそれらは囲み関数内の変数にすぎません。 – Barmar