码农的世界程序员

JS面试知识点 变量提升

2018-11-26  本文已影响11人  100273de9b5c

变量提升,也可以说成是变量声明提升,是指在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前端学习者聚集地,欢迎初学和进阶中的小伙伴。

上一篇 下一篇

猜你喜欢

热点阅读