无法理解此 JavaScript 构造

Cannot Understand this JavaScript Construct

本文关键字:JavaScript 构造      更新时间:2023-09-26

下面我附上了 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变量的返回函数。

内部函数是闭包,因此可以访问外部函数变量。

换句话说,函数是

var dayName = function (number) {
    return names[number];
};

可以访问私有变量names.

另请参阅

  1. JavaScript 中的 (function() { } )() 构造是什么?
  2. JavaScript 闭包是如何工作的?