開放,開發者控制檯(或node.js中),通過序列輸入以下代碼:關於var/const,爲什麼這段代碼會起作用?
a = 1
var a = 2
const a = 3
正如你可以看到它的工作原理,但如果你一次輸入所有的代碼,你會得到一個錯誤,我認爲這是比較合理的
我想唯一的區別在於起升,如果你輸入所有的代碼同時,它也將被處理:
var a
a = 1
a = 2
const a = 3
但我不明白爲什麼當你用行中輸入線,它的工作原理,如果你還跳過前行,你會得到一個錯誤預期
有趣的現象!您可能會暴露控制檯環境的某些特定行爲。 –
@AndyRay我嘗試在node.js和不同的瀏覽器中,我得到了相同的結果 – CodinCat
我可以想象,在第一種情況下'var'實際上被忽略,因爲全局對象上已經有一個名爲'a'的屬性(因爲'a = 1')。因爲這實際上並沒有任何宣佈'var a'的信息。正如你在第二種情況中指出的那樣,'var a'被掛起,因此在'a = 1'發生之前處理,所以不會被忽略。但是,這是猜測,控制檯/ REPL環境可能會做奇怪的事情。 –