這種寫法,是一種立即執行函式
的寫法,即iife等設計模式。這種函式在函式定義的地方就直接執行了。
理解iife設計模式的關鍵是要認識到,在es6之前,j**ascript僅具有函式作用域(因此缺少塊作用域),並通過
閉包內部的引用傳遞值。es6之後情況已不再如此,因為j**ascript的es6版本使用let
和const
關鍵字實現了塊作用域。
(function(){})()是匿名函式,主要利用函式內的變數作用域,避免產生全域性變數,影響整體頁面環境,增加**的相容性。
(function(){})是乙個標準的函式定義,但是沒有賦值給任何變數。所以是沒有名字的函式,叫匿名函式。沒有名字就無法像普通函式那樣隨時隨地呼叫了,所以在他定義完成後就馬上呼叫他,後面的括號()是執行這個函式的意思。
如下幾種寫法作用是相同的:
!function () ();
~function () ();
-function () ();
+function () ();
void function () ();
(function ()());
(function ())();
所以:!function(){}()寫法和(function(){})()是相同的
!function(){}()
①函式後的();表示要執行這個函式;
②而();要求前面必須是乙個表示式。(最後有js表示式的定義)。
③所以「!」的作用是將function(){}函式體轉為乙個函式表示式。
js 中的Function型別
函式的建立有兩種方式 二者基本等價,除了 什麼時候可通過變數訪問函式的區別,以下將舉例證明。以函式宣告的方式來建立,那麼不論在什麼時候訪問函式,都是正確的,因為解析器有函式宣告提公升。sayhello function sayhello 以函式表示式方式來建立,那麼只能在建立之後才能訪問。sayhe...
js中的函式function
python關鍵字 def js 關鍵字 function 格式 function 函式名 形參1,形參2,形參3.呼叫函式 函式名 引數 無參函式 function func1 有參函式 關鍵字arguments 能夠獲取到函式接收到的所有引數 function func3 a,b 利用argum...
js中function 與 的區別
在js中,箭頭函式並不是簡單的function 匿名函式的簡寫語法糖,實際上,箭頭函式和匿名函式有個明顯的區別 箭頭函式內部的this是詞法作用域,在編寫函式時就已經確定了。而匿名函式的this指向執行時實際呼叫該方法的物件,無法在編寫函式時確定。我們看一下下面的例子 function test 5...