2011-09-22 81 views

回答

8

我想你指的是什么()之间的区别:

function(){}(); 

和(II):

function func(){}; 
func(); 

甚至(III) :

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

所有这三种行为同样在考虑到的结果,但是他们有不同的命名和范围的后果:

  • :这不会使可用的功能以任何名义,它是运行一次并被遗忘。您不能引用它

  • II未来:创建并在全封闭的功能提供func功能,它被定义甚至之前(吊装

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

注意,在IIIII功能是通过func名referencable,可以再次调用多次。这对于I中的自我通话功能是不可能的。

+0

同意,但在什么情况下使用自我调用功能?我的意思是说他们有什么特别的需求可以用于某种特定的场景? – wOlVeRiNe

+2

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

相关问题