這種寫法叫立即執行函式。一般我們定義乙個函式,如:
function a()
這個函式不會執行,如果需要定義完乙個函式,馬上執行。就要寫成這樣的:
(function a())();
最後面的小括號表示呼叫的意思,函式被乙個括號包裹起來表示這是乙個整體,如果沒有這個括號,js引擎可能以為這個是函式宣告。這種寫法並不是唯一的。
!function a()();
-function a()();
+function a()();
~function a()();
這些都是,前面的符號只要告訴js引擎這一行是乙個表示式,而不是函式宣告都可以。
var a=function(){};
function a(){}
var foo=function(){}稱之為函式表示式 定義函式,function foo(){}稱之為函式語句 定義函式。
後者會預先編譯;前者則必須執行後面語句後才會對foo新增呼叫。
這兩種寫法還是有區別的,解析的順序不同。js永遠先解析宣告式函式,然後再解析var宣告的變數。還是以上面的寫個例子:
//如果這裡呼叫a();肯定是宣告式函式執行,彈出2。如果沒有宣告式函式,則報錯。
var a=function(alert('1')){};
//如果這裡呼叫a(),彈出1。var宣告的變數會覆蓋宣告式函式。
function a();//永遠先解析
立即執行函式,宣告式函式
這種寫法叫立即執行函式。一般我們定義乙個函式,如 function a 這個函式不會執行,如果需要定義完乙個函式,馬上執行。就要寫成這樣的 function a 最後面的小括號表示呼叫的意思,函式被乙個括號包裹起來表示這是乙個整體,如果沒有這個括號,js引擎可能以為這個是函式宣告。這種寫法並不是唯一...
立即執行函式
函式宣告 函式表示式 匿名函式 函式宣告 function fnname 使用function關鍵字宣告乙個函式,再指定乙個函式名,叫函式宣告。函式表示式 var fnname function 使用function關鍵字宣告乙個函式,但未給函式命名,最後將匿名函式賦予乙個變數,叫函式表示式,這是最...
立即執行函式
一 立即執行函式 立即執行函式,顧名思義,就是能立即執行的函式 一般的,函式的執行都遵循著先宣告,後呼叫的原則,無論是函式表示式還是函式宣告 1 函式宣告 宣告 function sayhello 呼叫 sayhello hello 2 函式表示式 宣告 var sayhello function ...