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

3
据我所知,以下是一种“自调用函数”:
func(){}();

以下内容与此有何不同?
func(){} func();
1个回答

12

我猜你的意思是 (I) 的区别是什么:

function(){}();

并且 (II):

function func(){};
func();

或者甚至 (III):

var func = function(){};
func();

这三种方法在结果方面的行为相同,但它们具有不同的命名和作用域后果:

  • I:此方法不会将函数提供给任何名称,在运行一次后被遗忘。您不能在未来引用它。

  • IIfunc 函数在整个封闭函数中创建并可用,即使在定义之前也是如此 (hoisting)。

  • IIIfunc 变量指向一个函数。在定义之前它不会被访问。

请注意,在 IIIII 中,可以通过 func 名称引用该函数,并且可以多次调用。这对于 I 中的自调用函数是不可能的。


同意,但是自调用函数在什么情况下使用?我的意思是它们是否需要在某种特定场景中使用? - wOlVeRiNe
3
我知道这篇文章有些过时,但是对于其他读者来说:你可以将所有自己的 JavaScript 代码都包裹在一个大的自调用函数中,这样它就可以运行了,但是你需要知道,它不会向全局命名空间添加变量名,因此,其他插件如 jQuery 或其他任何东西都不会意外地使用与你相同的名称并冲突。 - iono

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接