请问这里为什么要用自执行函数包一层,为什么不直接写函数呢?

ken丶
  • 113

问题描述

 这个是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) {
    
        .............
    }

回复
阅读 1.4k
3 个回答
✓ 已被采纳

外层的匿名立即执行函数应该是考虑到独立作用域的问题,但是这里仅仅是返回一个函数,除了这个当前作用域并没有其他变量,所以应该只是一种习惯而已。

这不简单吗,沙箱是为了分隔作用域,防止变量污染

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏