您能告诉我下面的返回声明中的菜单是什么(返回菜单;)?它是变量(未定义)还是内部函数的名称?
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;
}());
答案 0 :(得分: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();
&#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
变量。