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。

 

posted @ 2022-03-03 13:30  沉梦昂志_doc  阅读(179)  评论(0编辑  收藏  举报