【问题标题】:Immediately Invoked Function Expression (IIFE) use case in JavascriptJavascript 中的立即调用函数表达式 (IIFE) 用例
【发布时间】:2017-08-30 07:44:09
【问题描述】:

我知道 IIFE 用于防止污染全局名称空间。我不明白的是,假设您有一个共享相同名称的变量,如果您要在给定函数内使用关键字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 的意义何在?

【问题讨论】:

标签: javascript iife


【解决方案1】:

IIFE 的要点,可以(应该 - 尽管the name doesn't hurt)也可以写成

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

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

【讨论】:

  • 糟糕,打错了。
  • 啊,我明白你在说什么。
【解决方案2】:

如果函数不是IIFE,则必须调用该函数,如果是IIFE函数,则无需调用该函数,它在创建后立即执行。

【讨论】:

  • 但是...根据定义,生命是...称为...这没有区别。
猜你喜欢
  • 1970-01-01
  • 2016-05-04
  • 2012-09-02
  • 2023-04-04
  • 2012-12-28
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多