IIFE 表达式中是否包含所有函数?

Are all functions inside of an IIFE expressions?

If (function foo(){}) 是一个表达式,因为 'context' 因为“(Parenthesis)”是一个分组运算符,分组运算符只能包含一个表达式。

问题来了,你能在 IIFE 中声明一个函数吗?否则它仍然算作一个函数表达式?

如果函数被包裹在括号中,它本身就变成了一个表达式,因为括号创建了一个表达式上下文。

这不会影响函数体中的任何语句或声明。

(function iife() {
     function example() {
          …
     }
     …
}());

在这里,iife 的字面量是一个表达式,因为它在 (…()) 内部,但 example 照常是一个声明,因为它是函数体的一部分。