javascript函数调用
在阅读javascript函数时,我了解到您可以在定义函数后立即调用它:javascript函数调用,javascript,function,Javascript,Function,在阅读javascript函数时,我了解到您可以在定义函数后立即调用它: al = function(string){ alert(string) }("test"); 但是你不能用空的paren做同样的事情: al = function(){ alert("test") }(); 相反,您必须将函数转换为函数表达式: al = (function(){ alert("test") })(); 为什么会这样?为什么第一个代码示例在没有此转换的情况下可以正
al = function(string){
alert(string)
}("test");
但是你不能用空的paren做同样的事情:
al = function(){
alert("test")
}();
相反,您必须将函数转换为函数表达式:
al = (function(){
alert("test")
})();
为什么会这样?为什么第一个代码示例在没有此转换的情况下可以正常工作?您的三个示例或多或少都是相同的。请注意,
al=
在功能上没有任何作用,因为这些函数都不返回任何内容,因此al
将是未定义的。如果他们确实返回了某些内容,则会将其分配给al
al=
是前两个表达式语法正确所必需的
第一个例子的不同之处在于它需要一个参数。其他两个没有,但这对表达式的工作方式没有影响
括号也可用于表示表达式。例如,(function(){})(
是有效语法,但function(){}()
不是=
还发出表达式的信号,因此variableName=function(){}()
也可以工作。您正在考虑其他问题。你所有的例子都有用。您可能指的是没有赋值的情况,因为在这种情况下,前导关键字function
表示函数声明,而不是以匿名函数开头的函数调用表达式。如果您的第二个情况不起作用,我会感到惊讶!!啊,好的,那么如果我在没有作业的情况下完成上述所有操作,它们将中断?是的,请在没有作业的情况下重做第二个,看看会发生什么。这些操作都是按原样工作,而不是按原样工作。从第一个或第二个示例中去掉al=
将创建一个声明,后面不能调用括号。从第三个括号中去掉它,额外的括号仍然使它成为一个表达式。