iife是immediate invoke function expression的縮寫,中文名為立即執行函式,常用來封裝元件使用,它的寫法是
(
function()
)()// 或
+function()
()
那為什麼我們不可以這樣寫
function a()() // uncaught syntaxerror: unexpected token )
要解答這個問題,我們需要先來看看創造函式的方式。
方式1: 函式宣告式
function a()
方式2: 函式表示式
let a = function()
而當我們使用立即執行函式的時候,裡面的內容必須為乙個函式表示式才可以。
當我們在控制台執行+1
,-1
,~1
,!1
的時候,其實這些都是表示式,因此在執行~function(){}()
時,~function(){}
這一部分相當於是乙個表示式,所以可以執行。(function(){})
也是同理,會把裡面的內容變為乙個表示式。除此以外,下面這種寫法也可以
let a = function()()
不過我有兩個疑問
let test = function()()
這麼寫是可行的,當function變成箭頭函式,let test = () => ()就報錯了,這是為什麼。
當這麼寫的時候可以
(()=>)()
第二個疑問是let test = function()() 可以執行成功,但是我在console.log(test)之後列印的是undefined,這是為什麼
(function a(win, doc))(window)
關於JDBC的一些筆記
1 jdbc連線資料庫 首先要找到相應的資料庫驅動,指定連線的資料庫 載入驅動 class.forname 驅動名 獲得連線 connection con drivermanager.getconnection 資料庫連線 使用者名稱 密碼 2 執行sql語句 statement prepareds...
關於caffe的一些筆記
簡述每層的大小變化過程 data 64,3,227,227 conv1 64,96,55,55 pool1 64,96,27,27 norm1 64,96,27,27 conv2 64,256,27,27 pool2 64,256,13,13 norm2 64,256,13,13 conv3 64,...
關於AlarmManager的一些筆記
1 傳入的intent會被廣播傳輸 2 設定鬧鐘之後會在手機休眠狀態也維持,除非關機或重啟之後 3 onreceive 方法正在執行時,alarmmanager會獲得系統的cpu喚醒鎖,保證期間手機不休眠 4 setexactandallowwhileidle 5 setrepeating int ...