JavaScript中的自调用函数是什么?

wOl*_*iNe 2 javascript function

据我所知,以下是"自我调用功能":

func(){}();
Run Code Online (Sandbox Code Playgroud)

它与以下有什么不同?

func(){} func();
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 11

我假设你的意思是(I)之间有什么区别:

function(){}();
Run Code Online (Sandbox Code Playgroud)

和(II):

function func(){};
func();
Run Code Online (Sandbox Code Playgroud)

甚至(III):

var func = function(){};
func();
Run Code Online (Sandbox Code Playgroud)

所有三个在结果方面表现相同,但是它们具有不同的命名和范围结果:

  • :这不会使任何名称的功能可用,它运行一次而被遗忘.您将来不能参考它

  • II:func功能在整个封闭功能中创建并可用,甚至在定义之前(提升)

  • III:func定义指向函数的变量.在定义之前无法访问它.

请注意,在IIIII中,函数可以通过func名称进行引用,并且可以再次调用多次.I中的自我调用功能无法做到这一点.

  • 我知道这是旧的,但对于其他读者:你可以将所有自己的javascript包装在一个大的自调用函数中以便它运行,但是你知道它不会向全局命名空间添加一个变量名 - 然后,没有像jQuery或其他任何其他插件可能会意外地使用与您相同的名称和冲突. (3认同)