關於變數和函式的提升問題
阿新 • • 發佈:2020-08-24
今天碰見了函式的提升問題:閱讀以下程式碼:
var foo = function(){ console.log("仙女"); } function foo(){ console.log("魔鬼"); } foo();//列印仙女
解析順序為:
function foo() { console.log("魔鬼") } var foo; foo(); foo= function(){ console.log("仙女"); } foo()
到這我就有問題了:
一般來說變數和函式的提升,整體來說,變數宣告是在函式之後,那為啥上面的解析順序就var變數在後,function在前呢?
詢問老師之後,發現函式在宣告時就知道是字面量函式,不會被提升,
提升的只是“var 函式名” ,它的優先順序比function低。
而對於變數來說,var 變數名的優先順序就比function高。
也就是說,優先順序:
var 變數名>function 宣告> var 函式名。