Javascript 中的立即调用函数表达式 (IIFE) 用例

Immediately Invoked Function Expression (IIFE) use case in Javascript

我知道 IIFE 是用来防止污染全局名称的 space。我不明白的是,假设您有一个共享相同名称的变量,如果您要在给定函数内使用关键字 var 声明一个变量,那么函数何时出现并不重要在 运行 时间被调用? 我可能让它听起来比实际更复杂,但请看下面的代码块:

示例 1:没有 IIFE

var firstName = "eugene";

function name(){
  var firstName = "bobby";
  console.log(firstName); 
}
name(); //bobby

console.log(firstName); //eugene

示例 2:使用 IIFE

var firstName = "eugene";

(function(){
  var firstName = "bobby";
  console.log(firstName);
})();

console.log(firstName);

示例 2 输出基本相同的内容。如果要输出相同的东西,使用 IIFE 有什么意义?

IIFE 的要点,可以(应该 - 虽然 )也可以写成

(function () {
//       ^ anonymous
  var firstName = "bobby";
  console.log(firstName);
})();

就是不在全局范围内引入name。在您的第一个示例中,您可以调用 name() 两次或多次调用。

如果函数是非 IIFE 函数则必须调用函数,如果是 IIFE 函数则不需要调用函数创建后立即执行。