如果沒有那個小括號,他就像是最一開始的宣告函數的樣子,直譯器期待你宣告一個函數的名稱。
而小括號對 js 來講,算是個強迫運算,像我們平時運算 (2 + 3) * 5 會用小括號先強迫把 2 + 3 算出來。
對這個小括弧而言,則是強迫生出個匿名函數並且呼叫
具有名稱時我們是如此呼叫:
add(1, 2);
現在是匿名函數:
(匿名函數)(1, 2);
其實形式上還是一樣,單純只是變形的呼叫。這時使用匿名的最大大大優點就是「船過水無痕」。 任何你在裡頭做的事情,所佔的任何空間,到最後會馬上釋放。
在小型 js 看不出來,但是在大型一點的程式,大家一股腦的宣告了一堆全域函數跟變數,如果瀏覽器還沒離開這個頁面,這些空間就一直被佔著,無法釋放。