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
将不会覆盖它。