请解释下面代码为什么不能用作 IIFE?需要作出哪些修改才能使其成为 IIFE?
// 代码一
function (){}()
// 代码二
function foo(){}()
修改
// 代码一
(function (){})()
// 代码二
(function foo(){})()
几种常见写法
(function (){})()
(function (){} ())
括号的作用(让解释器识别为表达式而不是函数声明)
同理, 其他写法
var fn = (function foo() {})();
true && (function () {})();
0, (function () {})();
// 运算法
!(function foo() {})();
~(function foo() {})();
-(function foo() {})();
+(function foo() {})();
// void
void (function () {})();
// new 关键词
new (function () {})();
**