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

发布于 2022-09-11 22:11:58 字数 928 浏览 19 评论 0

问题描述

 这个是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鼻尖触碰 2022-09-18 22:11:58

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

半世晨晓 2022-09-18 22:11:58

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

假情假意假温柔 2022-09-18 22:11:58

https://segmentfault.com/a/11...

来文章发表你们伟大的想法 让我学习一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文