我的输出的动力就是问题的深刻 并非看表皮功夫 而后呢今天就碰到了这个我认为不是问题的问题 恰恰就是问题 而后呢我就梳理一下个人答案说明一下 有任何疑问均可以评论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了 另一个被采纳了......
回收机制规则大概以下:segmentfault
1.全局变量不会被回收。 2.局部变量会被回收,也就是函数一旦运行完之后,函数内部的东西都会被销毁。 3.只要被另一个做用域所引用就不会被回收
第三点 显然题目中是符合的呢 也就是闭包的概念,proxy
第二参数行为函数
使用了var stack = []该变量,那么就不会进行回收 也就是闭包
.
当即执行函数(immediately-inovked-function expression):
简称 IIFE。当即执行函数就是在定义的时候就当即执行,执行完之后就释放,包括函数内部的全部
变量。闭包
而后对应他的问题 我想知道这个问题是我答错了?
而后说我抬杠....
这个问题问的是为何外层套一个当即执行函数(IIFE) 个人出发点难道不是说这个IIFE起到什么做用? 不包IIFE有什么缺点?难道回答一个独立做用域就解决了? 莫非不包这个IIFE
function (value) {}
它没有独立做用域?函数