大周末的写太长了也没人看,标题所提问,其实没有区别,
function xxx(){...},这是一个函数,解释器知道了,但并不运行它;
xxx(),解释器遇到它就会执行它。
IIFE写法的好处:
1,普通写法代码多,并且定义和执行不在一起;
2,占用命名空间;
不想给某些函数起名,又想让它立即执行,那怎么办呢?简单啊,将之转化为表达式,加个()呗,变成这样,
(function xxx(){console.log('xxx')})();
那既然都立即执行了,干脆函数名也不要了吧,于是,
(function (){console.log('xxx')})();
为啥这样好呀?
因为IIFE搞了一个新的作用域,你的代码碰不到全局对象了。
立即执行函数表达式 IIFE(Immediately-invoked function expression)