• 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。

  • 相关阅读:
    Django(进阶篇)之model
    RabbitMQ、Memcache、Redis(队列、缓存)
    AJAX总结
    数据库 MySql(二)
    Python操作mysql之SQLAchemy(ORM框架)
    Python操作Mysql
    Tornado框架
    Ubuntu 出现未定义的 curl_init 错误
    ubuntu下apache配置https且强制http转向为https 腾讯云
    Git fetch
  • 原文地址:https://www.cnblogs.com/KeithTee/p/15959380.html
Copyright © 2020-2023  润新知