最近在学习javascript,看到匿名函数的时候有点不了解。在网上看到一篇关于匿名函数的文章,里面有一段代码是这样的:
alert((function(x,y){return x+y;})(2,3)); //5
下面解释到:
很多人或许会奇怪,为什么这种方法能成功调用呢?觉得这个应用奇怪的人就看一下我以下这段解释吧。
大家知道小括号的作用吗?小括号能把我们的表达式组合分块,并且每一块,也就是每一对小括号,都有一个返回值。这个返回值实际上也就是小括号中表达式的返回值。所以,当我们用一对小括号把匿名函数括起来的时候,实际上小括号对返回的,就是一个匿名函数的Function对象。因此,小括号对加上匿名函数就如同有名字的函数般被我们取得它的引用位置了。所以如果在这个引用变量后面再加上参数列表,就会实现普通函数的调用形式。
但是我把代码改成这样:
alert(function(x,y){return x+y;}(2,3)); //5
执行出来的效果也一样的。
想请教一下,这个括号加于不加的区别在哪?
这种函数叫立即执行函数,两种写法没什么区别。
除了一种情况,就是你连写了多个立即执行函数,并且用运算符连接。
可以参考下这篇文章
立即执行函数写法理解