函数的返回值是多少?

时间:2017-03-06 06:45:32

标签: javascript typescript

您能告诉我下面的返回声明中的菜单是什么(返回菜单;)?它是变量(未定义)还是内部函数的名称?

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 个答案:

答案 0 :(得分:2)

函数声明在声明它们的函数范围内创建一个变量,其名称与函数本身的名称相同。

因此返回值是函数,它与Menu变量的值相同。

&#13;
&#13;
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();
&#13;
&#13;
&#13;

答案 1 :(得分:2)

  

是变量......?

有效。它来自函数声明:

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

函数声明创建规范所称的&#34;绑定&#34;在范围的当前执行上下文中。它实际上是一个变量。

因此return Menu;会从匿名函数中返回Menu函数引用,而外部var Menu = ...赋值会将其分配给包含范围中的Menu变量。