全域性作用域中,用const和let宣告的變數去哪了?

被雨水過濾的空氣不想說話發表於2018-12-08

用const和let宣告的變數,不會存在window物件中

大家都知道在全域性作用域中用var宣告的變數,儲存在window物件中

全域性作用域中,用const和let宣告的變數去哪了?

但是用ES6的const或者let在全域性作用域中宣告的變數,卻不在window物件中

全域性作用域中,用const和let宣告的變數去哪了?

那這個全域性變數abcd被儲存在哪裡呢?經過我的尋找,終於在函式的內部屬性[[Scopes]]中找到了,如下圖

全域性作用域中,用const和let宣告的變數去哪了?

如上圖,在全域性作用域中用const宣告的變數在函式noop中可以正常訪問,沒有問題。我用dir方法列印出函式noop的屬性,最後在[[Scopes]]屬性內找到了消失的全域性變數abcd

完。

相關文章