美文网首页码农的世界程序员
JS面试知识点 变量提升

JS面试知识点 变量提升

作者: 100273de9b5c | 来源:发表于2018-11-26 11:30 被阅读11次

    变量提升,也可以说成是变量声明提升,是指在Javascript中变量的声明会被提到作用域的顶部,而变量的赋值留在原地,具体我们可以看看下面这个问题:

    Q : 下面的这段代码执行结果是什么?

    var a = 1;

    function test(){

    console.log(a);

    var a = 2;

    }

    test();

    如果你至今还不知道什么是变量提升,你可能会认为在函数test外部已经声明并赋值了a=1,

    那么函数内部第一行的log结果应该就是 1 。那我们把代码复制进浏览器看看结果吧:

    输出结果为 undefined

    其实,按照本文上面对变量提升的说明,也就不难理解了,实际代码运行的顺序应当是这样的:

    var a = 1;

    function test(){

    var a; //声明被提前

    console.log(a);

    a = 2; //赋值留在原地

    }

    test();

    值得一提的是:如果把变量声明的关键字 var 换成 let ,则会出现一个如下的错误:

    VM515:3 Uncaught ReferenceError: a is not defined

    你理解了吗?

    在这里提出另一点思考,如果我把代码稍作修改:

    var a = 1;

    function test(){

    console.log(a);

    a = 2;

    }

    test();

    结果会是怎样呢?

    如果有正在学web前端的小伙伴,可来我们的学习扣qun哦:86772,6593里面免费送视频教程。小编也是一名从事了5年web前端开发的工程师,花了近一个月整理了一份较适合18年学习的干货,以及我这五年的工作经验,分享给每一位想学web前端的小伙伴,这里是web前端学习者聚集地,欢迎初学和进阶中的小伙伴。

    相关文章

      网友评论

        本文标题:JS面试知识点 变量提升

        本文链接:https://www.haomeiwen.com/subject/rnovqqtx.html