[英]assign a function into a variable and run itself
我读过一个有趣的博客,上面的技术被应用了,我知道它会运行函数本身。 但有什么目的分配给一个变量,当我尝试CONSOLE.LOG变量i得到undefiend。
var test1 = (function(){
console.log('yay')
})();
console.log(test1)
下面的方式做的differnet是什么
(function test1(){
console.log('yay');
})();
建议表示赞赏。 :)
在上面的示例中,函数为空 ,这没有意义将函数结果分配给变量,因为它什么都不返回:
但是,请稍微调整一下样本:
var test1 = (function(){
console.log('yay'); return "hello";
})();
那么这很有意义,因为test1
将返回"hello"
。
因此,在您的原始样本中没有差异,并且您为不返回值的函数的结果赋值的事实有点奇怪。
Javascript中立即调用的函数表达式(IIFE)用于通过新作用域引入闭包。 通常这样做是为了弥补Javascript中缺少块作用域或提供隐藏la模块模式的信息(在jQuery插件中经常见到)。
下面的最小示例:
var counter = (function() {
var i = 0;
function inc() {
i++;
return i;
}
return inc;
})();
返回暴露将函数inc
分配给变量counter
。 的连续调用counter()
将导致1,2,等等,同时保持i
隐藏。
这大致相当于将i
声明为私有的面向对象方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.