下面我附上了《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));
我不明白的是为什么这个函数有一个尾随();?
它有什么用?我尝试寻找答案,但不知道该寻找什么。
有人可以解释一下为什么最后添加这个结构吗?任何帮助都是无价的。
最佳答案
立即调用函数并将返回值赋给变量。
var name = function() {
// Function body
}();
在您的情况下,该函数返回另一个函数。因此,函数 dayName
是返回的函数,可以访问 names
变量。
内部函数为 closure 从而可以访问外部函数变量。
换句话说,该函数是
var dayName = function (number) {
return names[number];
};
可以访问私有(private)变量名称
。
另请参阅
关于javascript - 无法理解这个 JavaScript 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797301/