2017-03-06 6 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