我知道 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/