1. 程式人生 > 其它 >JS變數提升(var)

JS變數提升(var)

先看以下這種情況(控制檯輸出a,在輸出class,但是報錯):

說明在程式執行之前,解析器會先把咱們的程式碼分析一遍,在分析的過程中,他就執行了變數提升!

來看以下幾種情況:

<script>
    console.log(web);
    var web = "I Love u";
</script>

這種情況下不會報錯,但是控制檯會輸出undefined.(如果變數只宣告,沒有賦值,它的值就是undefined)

為什麼不會報錯:var web = "I Love u";這句話代表兩步,var web ; web = "I Love u";

在解析器分析的時候,把var web;這句話放到最前面,所以上面程式碼等同於:
<script>
    var web;
    console.log(web);
    web = "I Love u";
</script>

再看一個函式的例子:

<script>
    function hd(){
        if(false){
            var web = "jamesHarden";
        }
        console.log(web);
    }
    hd();
</script>

很明顯,if語句裡面的var .....根本不會執行,但是這個程式最終輸出的是undefined,原因就是變數提升。

解析器會把var web;這句話放到最前面執行,所以就出現了undefiend。