在js中
function(){
console.log(11);
}();
执行时会报错,
Uncaught SyntaxError: Unexpected token (
预解析阶段把function(){console.log(11);}提升到顶部,但还是一个函数声明。
在执行阶段后面加上()会报错。
自执行正确格式是
(function(){console.log(11);})();
而以下格式会正确执行
var a = function(){console.log(22);}();
因为a提升后已经赋值即:a=function(){console.log(22);};
已经成为一个函数表达式。
在a后面加上()相当于a();