各位大佬,問個問題,let、const聲明的變量,暴露在全局,爲何沒掛載到window下?究竟掛載到哪裏去了?post
咱們打開控制檯,輸入spa
const a = 123; function abcd() { console.log(a); // abcd函數的做用域能訪問到a }; dir(abcd); 能夠在方法的[[Scopes]] 屬性中,看到變量a
const、let 這類都是,屬於聲明性環境記錄,「Declarative Environment Records」 ,和函數、類這些同樣,在單獨的存儲空間。
var這類,屬於對象性環境記錄,「object environment record」,會掛載到某個對象上,也會沿着原型鏈去向上查找code
說明const、let聲明變量不掛載到對象上,可是在全局的活動對象中能訪問到let、const 聲明記錄,也就是做用域鏈那邊沒問題對象
可是不是全局window對象的屬性,因此window.a訪問不到blog