function后的();表示要执行这个函数。所以要求后面这个括号()前面必须是一个表达式。
所以!的作用是将function(){…}函数体转为一个函数表达式
其中两种常用的写法是:
(function() {
...
})();
const aa = function() {
console.log('dd')
};
aa();
除此之外,还有其他几种可将function转为函数表达式:
!function () { /* ... */ }();
~function () { /* ... */ }();
-function () { /* ... */ }();
+function () { /* ... */ }();
void function () { /* ... */ }();
(function (){/*...*/}());
(function (){/*...*/})();