请问这里为什么要用自执行函数包一层,为什么不直接写函数呢?
问题描述
这个是es6标准入门里面的一段代码:
var pipe = (function () {
return function (value) {
var stack = [];
var proxy = new Proxy({}, {
get(arrObj, fnName) {
if (fnName === 'get') {
return stack.reduce((val, fn) => {
return fn(val);
}, value);
}
stack.push(window[fnName]);
return proxy;
}
});
return proxy;
}
})()
var double = n => n * 2;
var pow = n => n * n;
var reverseInt = n => n.toString().split('').reverse().join('') | 0;
pipe(3).double.pow.reverseInt.get;
问题出现的环境背景及自己尝试过哪些方法
在这里为什么要用到一个自执行的匿名函数呢, 完全可以直接写
var pipe = function(value) {
.............
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
外层的匿名立即执行函数应该是考虑到独立作用域的问题,但是这里仅仅是返回一个函数,除了这个当前作用域并没有其他变量,所以应该只是一种习惯而已。
这不简单吗,沙箱是为了分隔作用域,防止变量污染
https://segmentfault.com/a/11...
来文章发表你们伟大的想法 让我学习一下