2

在阅读有关 javascript 函数的信息时,我知道您可以在定义函数后立即调用它:

al = function(string){
      alert(string)
}("test");

但是你不能用空括号做同样的事情:

al = function(){
      alert("test")
}();

相反,您必须将函数转换为函数表达式:

al = (function(){
      alert("test")
})();

为什么会这样,为什么第一个代码示例在没有这种转换的情况下可以正常工作?

4

1 回答 1

2

您的所有三个示例都或多或少相同。请注意,al =没有任何功能,因为这些函数都没有返回任何内容,al所以undefined. 如果他们确实返回了某些东西,它将被分配给al. al =前两个表达式在语法上是正确的。

第一个示例的不同之处在于它需要一个参数。其他两个没有,但这对表达式的工作方式没有影响。

括号也可用于表示表达式。例如,(function () {})()是有效的语法,但function () {}()不是。 =也表示一个表达式,所以variableName = function () {}()也有效。

于 2013-03-11T01:05:06.053 回答