(function(){
        console.log(1);
    })()
(function(){
        console.log(2);
    })()

上述会出现错误,原因是第一个自调用函数执行完之后会返回一个undefine,接着编译器优化代码,会把代码变成下面这样:

undefined(function(){
        console.log(2);
    })()

  会把undefined当成一个函数来执行,自然会报错。

 

解决方法:在每个自调用函数前加分号即可屏蔽前面的代码对自调用函数的影响。

;(function(){
        console.log(1);
    })()
    ;(function(){
        console.log(2);
    })()