javascript - 无法理解这个 JavaScript 结构

标签 javascript

下面我附上了《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)变量名称

另请参阅

  1. What is the (function() { } )() construct in JavaScript?
  2. How do JavaScript closures work?

关于javascript - 无法理解这个 JavaScript 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797301/

相关文章:

javascript - 带 Angular Bootstrap 模态。模态框未使用特定的 data-ng-click 功能关闭

javascript - 将嵌套对象数据添加到表单

没有双{}的Javascript将数组转换为Json

javascript - 我的简单按钮给出了错误的颜色数量

javascript - 用于记住下拉选择的 cookie

javascript - limitTo : not working in AngularJS

javascript - 如何在 Javascript 中创建 url 随机化器?

Javascript 菜单栏,菜单项旁边带有刻度线

javascript - Bootstrap 4 输入分机值

javascript - 为什么用 ES5 表达的带有 set 关键字和函数的 setter 会抛出语法错误?