我刚刚在
this网站上发现关于闭包的一半不错的解释.他们向我们展示了以下工厂函数,以查看工作闭包:
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,startEngine: start };
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。