【发布时间】:2019-05-10 06:12:29
【问题描述】:
我是 JavaScript 的初学者,并且对 IIFE 在 JavaScript 中的工作方式感到困惑。也就是说,我知道它基本上用于转义变量被分配给全局变量以避免冲突。但事情是这样的,比如说,我们有这样的代码:
var number = 7;
(function() {
var number = 7;
alert(number);
})();
//In this code collision does not happen due to IIFE
但是如果我写:
var number = 7;
function num() {
var number = 7;
alert(number);
}
/*In this code there does not happen collisions and
number variable is not assigned to the global scope as well. So, why use IIFE?*/
num();
【问题讨论】:
-
为什么你认为局部变量分配给全局变量?
-
两个版本都是一样的,只是在第二个中你命名函数并单独执行它,在第一个中这是一起完成的。
-
@IngoBürk,感谢您的 cmets,是的,我知道,但据我了解,IIFE 基本上用于避免全局变量中的变量冲突。而且由于在两个代码中都没有冲突,所以我可以使用第二个代码而不是 IIFE。或者我错误地理解了 IIFE 的概念。
-
第二个有一个额外的全局
num函数。就是这样。 -
IIFE 只是一个立即调用的函数,并且不在全局范围内命名。范围不会根据是否立即更改。基本上,它允许您在不专门调用全局范围内的方法的情况下运行代码,同时还具有您调用的范围优势。
标签: javascript iife