js function前面加上!的意思

在看bootstrap源码的时候看到function前面加上了 “!”,感到很好奇,于是特地查了一下。

!function() {
...
}();

这前面为什么要加上!号?

function fnA(){alert('msg');}//定义函数
var fnB = function(){alert('msg');}//匿名函数

我们在函数定义后面加上 (); 表示要执行这个函数,要求前面必须是一个表达式。但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。

function msg(){
  alert('message');
}();//解析器是无法理解的

我们在function前面加上!就是将function(){...}函数体转为一个函数表达式。

同样的道理也是适用与“+-()~" 等符号,不过具体的符号的使用还是会存在性能的差异(http://www.swordair.com/blog/2011/10/714/)。

function() {
  ...
}();

//最常用的使用
(function() {
  ...
})();

 

posted @ 2013-02-19 10:33  Mr.Joe  阅读(426)  评论(0编辑  收藏  举报