繁体   English   中英

将函数分配给变量并自行运行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM