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

标签 javascript iife

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

最佳答案

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

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

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

关于javascript - Javascript 中的立即调用函数表达式 (IIFE) 使用案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218557/

相关文章:

javascript - 如何在运行时编辑 html 文件中的内联 javascript?

javascript - 将函数的默认参数设置为 bool 值的正确方法?

javascript - 谷歌地图API搜索标记与条件

javascript - 立即调用函数并在 $scope 中调用

javascript - 将 IIFE 格式的函数导出到 ES6 模块

Javascript:关闭弹出窗口、打开新窗口和重定向

javascript - Angularjs:html 属性和 <style> 标记中的变量

javascript - 将动态参数传递给 IIFE

javascript - 高级 JavaScript : Why is this function wrapped in parentheses?

javascript - 如何在循环中编写对立即调用的函数的回调?