簡體   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