下面我附上了Eloquent JavaScript书第10章的摘录。
var dayName = function () {
var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"
];
return function (number) {
return names[number];
};
}(); //==> '();' this construct right here....
console.log(dayName(3));
我无法理解为什么这个函数有一个尾随的(); ?
它的用途是什么?我试过找到答案,但我不知道该找什么。
有人可以解释一下为什么最后添加这个结构吗?任何帮助都是非常宝贵的。
答案 0 :(得分:3)
立即调用该函数并将返回的值赋给变量。
var name = function() {
// Function body
}();
在您的情况下,该函数返回另一个函数。因此,函数dayName
是可以访问names
变量的返回函数。
内部函数是 closure ,因此可以访问外部函数变量。
换句话说,功能是
var dayName = function (number) {
return names[number];
};
可以访问私有变量 names
。
另见