Iife如何在变量名冲突和不污染全局范围(与常规的非Iife函数相对)中提供帮助?

时间:2018-07-08 08:24:59

标签: javascript iife

我对iife的用途之一了解很多,以帮助解决名称空间冲突,以及如何使它意外影响全局对象和污染全局范围变得困难。以及它如何导致更安全的代码。

我的问题是,所有已经发生在未立即调用的函数中。我们是否特别需要一个“偶像”才能获得这些好处?使用IIFE从而隐藏和创建单独的环境与常规功能有何不同?在iife中,变量是局部变量(因此它们不会污染全局范围),但在非iife函数中也是如此。

我的意思是说iife不会对变量变量产生帮助,而对 function 名称冲突有帮助吗?甚至普通的非iife函数中的变量都是局部作用域的,不会与全局变量冲突,不是吗?

因此,简而言之,当他们谈论专门污染w.r.t的污染全局范围时。一个i妇,他们在谈论不污染w.r.t. 方法名称而不是变量名称

1 个答案:

答案 0 :(得分:0)

  

我的意思是说iife不能帮助变量名冲突,但可以帮助函数名冲突吗?

是的,IIFE不会污染全局名称空间,因为函数itaelf以及内部声明的变量都不是全局范围的一部分。

  

甚至普通的非iife函数中的变量都是局部作用域的,不会与全局变量发生冲突,不是吗?

就您所宣称的(很多人忘记了),是的。

  

因此,简而言之,当他们谈论污染全球范围时,特别是w.r.t.一个i妇,他们在谈论不污染w.r.t.方法名而不是变量名?

实际上,两者都需要隐藏函数,而IIFE则需要隐藏函数。