用途 : 独立作用域

请解释下面代码为什么不能用作 IIFE?需要作出哪些修改才能使其成为 IIFE?

  1. // 代码一
  2. function (){}()
  3. // 代码二
  4. function foo(){}()

修改

  1. // 代码一
  2. (function (){})()
  3. // 代码二
  4. (function foo(){})()

几种常见写法

  1. (function (){})()
  2. (function (){} ())

括号的作用(让解释器识别为表达式而不是函数声明)

同理, 其他写法

  1. var fn = (function foo() {})();
  2. true && (function () {})();
  3. 0, (function () {})();
  4. // 运算法
  5. !(function foo() {})();
  6. ~(function foo() {})();
  7. -(function foo() {})();
  8. +(function foo() {})();
  9. // void
  10. void (function () {})();
  11. // new 关键词
  12. new (function () {})();

**

https://github.com/lgwebdream/FE-Interview/issues/1073