我得知IIFE用于防止污染全局名称空间。我不明白的是,假设你有一个共享相同名称的变量,如果你要在一个给定函数内使用关键字var
来声明一个变量,那么在运行时函数被调用时无关紧要时间? 我可能使它听起来比它更复杂的,但看看下面的代码块:立即在Javascript中调用函数表达式(IIFE)用例
例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的要点是什么?如果它将出现同样的事情?
这个问题有很多例子已经在堆栈上。 http://stackoverflow.com/questions/14317998/immediately-invoked-function-expression-iife-vs-not – SoEzPz
[名称IIFE和立即调用名称函数之间的区别?](http:// stackoverflow .com/q/15688420/1048572) – Bergi
它只是一个被称为immedaitely的函数。为什么它需要有一个点?它做它做的事情。 –