function|关于一个问题 为什么外层套一个立即执行函数

前言 个人输出的动力就是问题的深入 并不是看表皮功夫 然后呢今天就碰到了这个我认为不是问题的问题 偏偏就是问题 然后呢我就梳理一下我的答案说明一下 有任何疑问都可以评论
正题 这是题注的问题:

这个是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. 接下来具体说一下我的答案 咀嚼一下 好让大家明白我为什么这么回答
主要从回收机制来说这个问题:
【function|关于一个问题 为什么外层套一个立即执行函数】回收机制规则大概如下:
1.全局变量不会被回收。 2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。 3.只要被另外一个作用域所引用就不会被回收

第三点 显然题目中是符合的呢 也就是闭包的概念, proxy 第二参数行为 函数 使用了var stack = []该变量,那么就不会进行回收 也就是 闭包.
立即执行函数(immediately-inovked-function expression):
简称 IIFE。立即执行函数就是在定义的时候就立即执行,执行完以后就释放,包括函数内部的所有变量。
然后对应他的问题 我想知道这个问题是我答错了?
然后说我抬杠....
贴个链接问题地址 更新疑问 2019/9/3 16.55
这个问题问的是为什么外层套一个立即执行函数(IIFE) 我的出发点难道不是说这个IIFE起到什么作用? 不包IIFE有什么缺点? 难道回答一个独立作用域就解决了? 莫非不包这个IIFE function (value) {} 它没有独立作用域?

    推荐阅读