js庫前加一個感嘆號(!)是什麼意思??

此文出自 http://q.cnblogs.com/q/52920/

!function(){}();   !有什麼用?

從語法上來開,JavaScript中分號表示語句結束,在開頭加上,可能是爲了壓縮的時候和別的方法分割一下,表示一個新的語句開始。所以,如果在一個單獨的JS文件中,開頭的分號是沒有任何意義的,可以刪掉。

歎號是邏輯運算符,是“非”的意思,常見這種寫法 if(!true){};而將運算符加載函數定義的前面,則是將函數看做一個整體,然後再調用這個函數,並對返回的結構進行邏輯運算。

說白了,此處就是構建了一個立即執行函數,建議樓主知道意思就可以,自己寫的時候,可以使用更清晰的格式:

(function(){})();


樓上已經給出很詳細的解說了。

這裏補充一點:在函數聲明【 function (){} 】後面加【 () 】,意思是執行這個函數聲明。有的叫法是“匿名自動執行函數”,更準確的表示應該爲“立即執行函數”。

 

但立即執行函數,要作爲表達式的一部分才行,不然js解釋器會報語法錯誤。一般,成爲表達式的最容易理解方式是:在左右兩端加一個圓括號,像這樣【 (function (){}) 】。所以,立即執行函數最常見的寫法是【 (function (){})() 】,這是一個語句,在前面和後面都可以加【 ; 】。

 

其實立即執行函數還有N種寫法,比如【 (function (){}) 】也行,在函數聲明前加一元運算符也行:【 !function (){}() 】、【 ~function (){}() 】。甚至,對一元運算符進行組合也可以:【 !!!!function (){}() 】、【 ~~~function (){}() 】、【 !~!function (){}() 】。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章