
按照預編譯的話輸出不應該是function foo() {}嗎?
不太明白
uj5u.com熱心網友回復:
預編譯時是把foo宣告為函式了,但之后代碼執行時又重新兩次賦值10和11uj5u.com熱心網友回復:
還是不太明白,預編譯不是先找變數宣告,再找函式宣告的嗎?那foo的變化不是應該是11然后函式然后10嗎?
uj5u.com熱心網友回復:
預編譯時對函式是宣告并賦值。但預編譯時對變數只是宣告,沒有對變數進行賦值。
對變數的賦值是在代碼執行時才進行。
uj5u.com熱心網友回復:
你這個代碼預編譯與執行時是這樣的:function bar() {
//預編譯時
var foo;
function foo() {
}
//執行時
foo = 10;
foo = 11;
return foo;
}
uj5u.com熱心網友回復:
OK,終于明白了,謝謝!
uj5u.com熱心網友回復:
最終賦值的是11 foo = xxx xxx不同型別就不一樣,可以是[]/json/func/string/num... 最終你賦值是11就變成數字了轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/76973.html
標籤:JavaScript
上一篇:有沒有一種軟體可以指定圖片大小,尺寸,顏色,然后生成一個符合我要求的圖片
下一篇:web服務器
