2017-03-06 141 views
0

您能否告訴我什麼是下面的返回語句中的菜單(返回菜單;)?它是一個變量(沒有定義)或內部函數的名稱?函數的返回值是什麼?

var Menu = (function() { 
    // A straightforward constructor. 
    function Menu(item_list, total_pages) { 
     // The this keyword is mandatory. 
     this.items = item_list; 
     this.pages = total_pages; 
    } 
    // Methods 
    Menu.prototype.list = function() { 
     console.log("Our menu for today:"); 
     for (var i = 0; i < this.items.length; i++) { 
      console.log(this.items[i]); 
     } 
    }; 

    return Menu; 
}()); 

回答

2

它是一個變量...?

有效。它來自於函數聲明:

function Menu(item_list, total_pages) { 
    // The this keyword is mandatory. 
    this.items = item_list; 
    this.pages = total_pages; 
} 

函數聲明創建規範要求在範圍內當前執行上下文「結合」是什麼。這實際上是一個變量。

所以return Menu;返回Menu函數參照了匿名函數的,並且外var Menu = ...分配其分配給在含有範圍Menu變量。

2

函數聲明在它們聲明的函數範圍內創建一個變量,其名稱與函數本身的名稱相同。

所以返回值是一個函數,它與Menu變量的值相同。

function return_function() { 
 

 
    function foo() { 
 
    console.log(1); 
 
    } 
 

 
    console.log(foo); 
 

 
    var bar = foo; 
 
    foo = 2; 
 

 
    console.log(foo); 
 

 
    return bar; 
 

 
} 
 

 
var baz = return_function(); 
 

 
baz();

+0

我們應該合併帳戶。 :-)在我們之間,我們有Skeet擊敗! –

+0

@ T.J.Crowder :) – Quentin

相關問題