【发布时间】:2017-10-30 05:57:31
【问题描述】:
var ag = (function(){
function update(at){
console.log('at::'+at);
}
return {hike:function(){update(2);}}
})();
在这种方法中,我可以通过引用(ag.hike();) 访问内部函数远足()。
var ag = (function(){
function update(at){
console.log('at::'+at);
}
return update(2);
})();
在上面的示例中,即使通过引用(ag.update(2) 或 ag.update()),我也无法访问相同的内部 update() 方法。
我读到我们无法读取 IIFE 的内部属性。但在第一种情况下,我可以访问,而在第二种情况下,我无法访问。
以上两个例子有什么区别? 为什么这两种不同的行为? 请解释一下。对不起我的英语。
【问题讨论】:
-
在第一个 sn-p 中,您返回一个 objcet,它有一个方法,该方法在 IIFE 上是封闭的。在第二个 sn-p 中没有闭包,IIFE 只返回一个值(实际上是
undefined)。 -
function update(at)返回 undefined .. 你返回return update(2);... 因此ag === undefined -
谢谢,但我在某处读过任何内部函数都可以是闭包。所以我们不能通过闭包访问。对不起,如果我错了
标签: javascript iife self-invoking-function