js自執行函數


5.1對於函數表達式,在后面加括號即可以讓函數立即執行;例如下面這個函數,至於為什么加了括號就可以立即執行,我們可以這么理解,就是像fn1();這樣寫的話,函數 可以立即執行是沒問題的,我們在經常會用到,那么對於函數表達式來說,fn1就是對后面的匿名函數的一個引用,因此在后面的匿名函數后直接加括號,自然也就可以立即執行

 
 
函數表達式立即執行

5.2但是對於下面這個函數,如果直接加()就會報錯;如果按照上面的思路去理解,在匿名函數后面直接加上()應該是可以立即執行的,但是下面這個函數之所以會報錯,而且會報兩個錯誤,是因為js引擎在解析js代碼的時候,遇到以function打頭的函數會當做函數聲明,然后會檢查語法錯誤,那么第一個括號處的語法錯誤在於函數聲明是必須要有函數名字的,而()前面沒有所以報錯;第二個括號處的語法錯誤在於函數聲明到第二個花括號處,就已經算是結尾了,后面的()會被當作分組操作符,這個()實際上已經和函數聲明沒關系了,但是既然有了分組操作符,那就要有表達式,不然會報錯;

 

函數聲明想要立即執行,會報錯

按照上面的分析,我們如果在第一個()前面加上函數名稱,在第二個()里面加入表達式,那么就不會報錯了,我們來看一下效果

 

 
改掉語法錯誤以后的函數聲明

可以看到修改了那兩處的問題以后,報錯消失了,但是這個時候函數並沒有執行,原因上面也已經提到了,就是一旦被當作函數聲明,那么到花括號處就算為止了,后面的()就只當作一個分組操作符,和函數沒有任何關系了

5.3那么想讓這種匿名函數直接執行應該怎么辦呢,其實很簡單,就是在function前面加上一些操作符,這樣js引擎在解析的時候就不會把它當成是函數聲明了

 

推薦使用的方法,看起來比較具有結構性
 
也是一種常用的寫法
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM