當函式可以記住並訪問所在的詞法作用域,就產生了閉包
for (var i = 0; i <= 5; i++) , i * 1000)
}
這裡就涉及到事件的輪詢機制。非同步事件和同步事件,非同步事件會在最後執行。
要解決上面的問題有兩種方法,分別是使用立即執行函式和塊級作用域來解決,都為函式建立了乙個塊級作用域。這樣內部的timer
函式就能引用到塊級作用域中的變數,而不會被銷毀
立即執行函式
for (var i = 0; i <= 5; i++) )(i), i * 1000)
}
這裡立即函式會立即執行,但是由於內部的timer
引用了i
所以立即執行函式的作用域不會被銷毀
塊級作用域
for (var i = 0; i <= 5; i++) , i * 1000)
}
利用let
對作用域的劫持,但是上面的let
每次都會宣告,並且使用上次結束的值初始化下一次的宣告,可以像下面這樣來
for (let i = 0; i <= 5; i++) , i * 1000)
}
其實模組也是使用的閉包來實現的 作用域 閉包
1.js執行順序 語法分析 預編譯 先生成go物件 1.函式執行生成ao物件 2.形參和變數作為ao物件的鍵名,鍵值是undefined 3.實參賦值給形參 4.在函式中找到函式宣告,把函式作為ao物件的屬性名,屬性值為函式體 執行js 作用域 變數作用範圍 1.作用域 變數作用範圍 1 函式作用域...
python第五章 Python學習(第五章)
記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...
作用域,閉包,作用域鏈
一,作用域 變數在宣告它的函式及該函式所巢狀的任意函式是有定義的 例var num 2 function fun fun 二,作用域鏈 多個函式巢狀在一起,多個作用域相互巢狀,這是作用域鏈 var num 1 function fun function fun2 fun1 fun2 fun 訪問原則...