问题描述
这个是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) {
.............
}
外层的匿名立即执行函数应该是考虑到独立作用域的问题,但是这里仅仅是返回一个函数,除了这个当前作用域并没有其他变量,所以应该只是一种习惯而已。