运行以下这代码, 不会象我们预期的那样弹出a 和 b
(function(){ alert('a'); })() (function(){ alert('b'); })()
错误信息是:
分析问题是分析器把代码解析成这样
(function(){ alert('a'); })()(function(){ alert('b'); })()
很简单的方法就是加一个分号
(function(){ alert('a'); })(); (function(){ alert('b'); })();
就可以了。
在自运行函数后面如果出现一对括号的话,就会出现这样的问题, 会被认为是在调用一个函数(方法),所以还是要保持好的代码风格,在完成语句后加上分号,虽然javascript允许没有结束符(;)。