Javascript 为什么JQuery使用IIFE(立即调用的函数表达式)
我得到了一个解释,这样它就不会污染全局变量环境。 但为什么不声明普通函数并在最后调用它呢Javascript 为什么JQuery使用IIFE(立即调用的函数表达式),javascript,jquery,iife,Javascript,Jquery,Iife,我得到了一个解释,这样它就不会污染全局变量环境。 但为什么不声明普通函数并在最后调用它呢 function$(){ some awesome code here with variables declared with var keyword} $(); 当您创建如下函数时: function doSomething() { ... } 它是在窗口下创建的,可以作为窗口访问。doSomething。因此,即使函数内的变量没有溢出到外部,函数名本身也会污染全局命名空间。因此,它可能与开
function$(){ some awesome code here with variables declared with var keyword}
$();
当您创建如下函数时:
function doSomething() {
...
}
它是在窗口下创建的
,可以作为窗口访问。doSomething
。因此,即使函数内的变量没有溢出到外部,函数名本身也会污染全局命名空间。因此,它可能与开发人员希望使用的自定义函数发生潜在冲突
相反,当您使用IIFE并公开
jQuery
或$
下的函数时,全局名称空间保持清晰。“为什么不直接声明普通函数呢?”因为声明一个只做一件事的普通函数(setup jQuery)本身会污染Ok的全局范围。我还是不完全明白。您能否进一步详细说明它如何与哪种自定义函数冲突?你所说的自定义函数是什么意思?jQuery或$exposed无论如何都会与全局名称空间中以相同名称声明的变量冲突。比如说jQuery使用了一个函数doSomething
,但没有意识到您还需要创建一个新函数doSomething
。它将覆盖jQuery的doSomething
函数。因此,它会在您的程序中导致不必要的错误。使用jQuery名称空间中的该函数,您的doSomething
将不会覆盖它。