JavaScript 中匿名函数(或任何它)的目的/好处是什么?

What is the purpose/benefit of anonymous functions (or whatever this is) in JavaScript?

本文关键字:是什么 任何它 函数 JavaScript      更新时间:2023-09-26

在过去的几周里,我看到很多应用程序在脚本的开头都有这种脚本:

(function() {
  // Code goes here...
});

任何人都可以解释这一点或链接到一些有关此的资源吗?

"use strict"用于

确保声明所有变量。例如,我可以没有错误:

x = 3;

虽然没有声明,但我不能做:

"use strict";
x = 3;

不会引发错误。我必须使用:

"use strict";
var x = 3;

"use strict"可用于function。例如:

x = 3; // no error
myFunc();
function myFunc() {
    "use strict";
    y = 3; // error
}

编辑

use strict模式下,您也无法delete变量。

匿名函数是动态声明的函数 运行。它们被称为匿名函数,因为它们没有被赋予 与正常函数相同的名称。

匿名函数改为使用函数运算符声明 的函数声明。您可以使用函数运算符来 在放置表达式的有效位置创建一个新函数。为 示例,您可以将新函数声明为函数的参数 调用 or 以分配另一个对象的属性。

这是文章。

实际上,这可能是这样的:

(function() {
  "use strict"
  var x = 1;
  document.write("I am inside the function scope and x=", x, "<br/>");
}())
if (typeof(x) === "undefined") {
  document.write("I am outside the function scope and x=undefined");
}

该函数创建一个作用域,可用于防止在全局作用域上设置变量等。 "使用严格"有助于保持代码干净,并抛出可能导致错误的常见错误(例如重新声明同名变量)。 请注意,在上面的代码中,var x 是在函数作用域内设置的。 在函数范围之外,它是未定义的。 如果您将这两件事加载到不同的.js文件中并且来自不同的作者,它们各自可以使用自己的"var x",并且它们不会冲突,因为它们位于不同的范围内,而不是在全局范围内设置。

至于"使用严格"模式以及它具体防止什么,您可以在此处的文档中查看更多详细信息:MDN"使用严格"文档

作为参考,此代码开头的函数被视为 IIFE(立即调用的函数表达式)。