ES6標準提出了Temporal Dead Zones,在評估詞法綁定之前,無法以任何方式創建變量引用。那麼在詞法環境初始化時變量創建是什麼意思呢爲什麼在存在TDZ時提升變量
- 程序員?
- 編譯器?
使用var
聲明可能意味着一些以前程序員變量的聲明,但現在到位並開始JavaScript的行爲,如Java爲此目的TDZ?除了JavaScript解釋器的工作方式之外,還有什麼原因可以使我們首先提升(因此TDZ)呢?
如果由於執行順序而在代碼中稍後遇到詞法綁定,即使代碼出現在詞法上時也會發生什麼?
let abc = f();
let b;
f(){ return b;}
傳統上,像java這樣的編程語言是否會創建變量?遇到變量聲明時?或者當詞法作用域被初始化時?
也許是因爲很多問題的,可以generaly由谷歌在大多數 –
沒有真正得到解決,我嘗試了其中的大部分,比如像Java這樣的語言創建變量並空手而來。大多數資源TBZ有很好的解釋,但他們沒有解釋爲什麼我們首先需要它,因爲現在如果變量懸掛起來就沒有關係(僅限塊範圍元素) – sasidhar
@sasidhar,有多個不同的步驟來「創建「 一個變量。你在說什麼時候他們被認爲是變數?你在談論他們的內存地址空間何時填充?許多許多語言以不同的方式「創造」變量,你必須看看每種語言在語言環境中是如何處理的。 – Jay