1. 程式人生 > 實用技巧 >關於變數和函式的提升問題

關於變數和函式的提升問題

今天碰見了函式的提升問題:閱讀以下程式碼:

    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 函式名。