加var 變數和不加var 變數的區別
- 加var的變數 都會提升,不管代碼執行與否, 不加var的變數預編譯階段不會提升
- 原型鏈 和作用域鏈
window.a //不會報錯 回傳undefined 訪問物件不存在的屬性不會報錯 ,走原型鏈 訪問GO中不存在的屬性 a //直接訪問未定義的變數會報錯, 走作用域鏈 沒有找到 - 不管是否加var 只要是全域變數, 在非嚴格模式下都會掛載到GO上
- 沒有加var的只能做全域
- 專案中盡量避免var , 更不要不宣告
let
- 宣告的變數不能訪問
- let + {} 可以形成塊級作用域 只能在塊中使用
- 使用let宣告的變數 不會掛載到GO上
- let定義同一個變數只能定義一次 ,二次定義會報錯
function(a){ // 在函式內部的形參相當于函式定義的區域變數 let a = 1 //這里會報錯 }
const
- 宣告的變數不能修改
- 宣告必須賦值, 不然報錯
- 宣告的變數不會提升
- const 和{}也可以形成塊作用域 ,也不會掛載到GO上
閉包 一個不能回收的堆疊記憶體
- 保護EC中的變數 外界不能范圍
- 保存 可以像使用全域變數一樣使用區域變數 延長變數的生命周期

練習題

//




轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/545353.html
標籤:JavaScript
