函数后的();表示要执行这个函数。所以要求后面这个括号()前面必须是一个表达式。
(表达式理解参阅http://www.cnblogs.com/fangsmile/p/8337021.html)
所以!的作用是将function(){...}函数体转为一个函数表达式。
同样道理:~function() { ...}();一样可行。
但是我们常用的方式是:(function() { ...})();我更倾向这种方式,因为简单易读。