Javascript小括号“()”的多义性

今天研究了下匿名函数的自执行,对于匿名函数为什么要用括号括起来,甚是不解,于是做了下实验,如下:

function(){
    alert(1);
}
();

另一组:

var a = function() {
    alert(1);
}
a();

第一组在执行的时候是会报错的,而对匿名函数加上小括号,或者是赋给一个变量后,再调用就不会再有错误,这就可以看出来,在匿名函数自执行的时候,匿名函数外的小括号的作用其实是进行了一次运算。另外function是一个表达式,这一点在犀牛书的第五章一开始有说到。

关于括号的运算的意义在这篇博文里面的第五点也有提到:http://www.cnblogs.com/snandy/archive/2011/03/08/1977112.html