关于一个问题 为何外层套一个当即执行函数

前言

我的输出的动力就是问题的深刻 并非看表皮功夫 而后呢今天就碰到了这个我认为不是问题的问题 恰恰就是问题 而后呢我就梳理一下个人答案说明一下 有任何疑问均可以评论es6

正题

这是题注的问题:express

这个是es6标准入门里面的一段代码:
 var pipe = (function () {
        return function (value) {
            var stack = [];
            var proxy = new Proxy({}, {
                get(arrObj, fnName) {
                    if (fnName === 'get') {
                        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) {
    
        .............
    }
以上是他的原问题,而后个人回答关键字是 回收机制还有 闭包还有 写法区别 而后另一个答主说是 独立做用域 写法习惯而后我被pass了 另一个被采纳了......
  1. 首先分析某答主的答案 是独立做用域 固然每个函数声明都有独立做用域 我不否认可是和问题有关系吗? 就被采纳了...写法习惯不敢苟同
  2. 接下来具体说一下个人答案 咀嚼一下 好让你们明白我为何这么回答

主要从回收机制来讲这个问题:

回收机制规则大概以下:segmentfault

1.全局变量不会被回收。
   2.局部变量会被回收,也就是函数一旦运行完之后,函数内部的东西都会被销毁。
   3.只要被另一个做用域所引用就不会被回收
第三点 显然题目中是符合的呢 也就是闭包的概念, proxy 第二参数行为 函数 使用了var stack = []该变量,那么就不会进行回收 也就是 闭包.

当即执行函数(immediately-inovked-function expression):
简称 IIFE。当即执行函数就是在定义的时候就当即执行,执行完之后就释放,包括函数内部的全部变量。闭包

而后对应他的问题 我想知道这个问题是我答错了?
而后说我抬杠....

贴个连接问题地址

更新疑问 2019/9/3 16.55

这个问题问的是为何外层套一个当即执行函数(IIFE) 个人出发点难道不是说这个IIFE起到什么做用? 不包IIFE有什么缺点?

难道回答一个独立做用域就解决了? 莫非不包这个IIFE function (value) {} 它没有独立做用域?函数

相关文章
相关标签/搜索