這次帶給大家JS關於作用域的一個問題,JS關於作用域的注意事項有哪些,下面就是實戰案例,一起來看一下。
var a = 1;function foo () { console.log(a); var a = 2; console.log(a); } foo();
請分別寫出第一個 console.log 和第二個 console.log 的輸出值。
Javascript函數 變數的初始化順序
#預執行期
1.函數宣告被初始化,放置到全域變數(全域上下文環境)window中
2.var宣告的變數被放置到全域變數(全域上下文環境)window、或var所在的上下文環境如函數內部中,初始值為undefined
#執行期
當程式碼執行到時,變數賦值才會發生。非var宣告的變數也只在程式碼執行到後才被創建,然後放置到全域變數(全域上下文環境)window中
Javascript 上下文環境
全域上下文環境:Window
函數上下文環境:在函數內部使用var宣告的變數是本機變量,出了函數範圍後會被垃圾回收。閉包不會被垃圾回收。
即var宣告的變量,在預執行期都會被放到對應的上下文環境中,然後在執行期,對應上下文環境中的變數會被賦值。
答案
undefined 2
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是JS關於作用域的一個問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!