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

时间:2017-04-04 22:11:13

标签: javascript iife

我知道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的重点是什么?如果它要用同样的东西?

2 个答案:

答案 0 :(得分:1)

IIFE的观点可能(应该 - 虽然the name doesn't hurt)也写成

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

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

答案 1 :(得分:-1)

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