做用域安全
什麼是做用域?函數
做用域就是你的代碼在運行時,各個變量、函數和對象的可訪問性。換句話說,做用域決定了你的代碼裏的變量可否被外界引用。spa
爲何須要做用域?對象
最小訪問原則。做用域爲代碼提供了一個安全層級,不一樣做用域互不干擾。有利於追蹤bug並且避免了同名變量衝突。作用域
做用域有哪些?編譯器
全局做用域 (window)編譯
局部做用域(函數)變量
塊級做用域(ES6 let/const關鍵字)引用
js中的做用域指的是詞法做用域。一段js代碼執行須要通過2個階段:bug
1.編譯階段--編譯器會編譯你的代碼(詞法化),這個時候,你的做用域就已經肯定了的
2.執行階段--js引擎開始執行你的代碼
js的做用域跟執行上下文常常被混淆。如何區分呢?
做用域是在編譯階段就已經肯定了的, 而執行上下文是在函數被執行的時候建立的(執行上下文之後會講到,注意:全局做用域能夠當作一個特殊的‘執行上下文’,先把window理解爲一個函數吧)