关于JS中变量提升的详解

(一)总体概括:

        在实际的代码编写中,你或许对这些内容没有认识,因为缺乏这些知识并不会对你日常编写代码造成很大的困扰:为什么函数在未被构建前就调用代码还可以正常执行?为什么变量明明声明了但却显示undefined?怀着对知识的敬佩和拓展,在简单学习了这方面的知识后,我觉得比较重要,这涉及了代码底层的一些逻辑。鄙人短见,如有错误望指正。

(二)变量提升

        (1)先行条件

                (1)只在var声明时提升,let和const不会提升

                (2)提升的只能是声明,不是赋值

                (3)只在当前作用域内提升

        (2)相关实例

                在ES6之前,let和const未问鼎的时候,绝大部分变量声明都是使用var关键字,下面介绍常见的变量提升的问题:

console.log(a);
var a = 10;

                代码的运行结果是undefined,是不是没想到。其中所谓的变量提升,其实就是指在JavaScript解析时,会先找到代码中的所有变量声明,然后将其放到其作用域的头部,但请注意!变量提升只提升其中的变量声明,不提升其赋值操作。上方的例子相当于:

var a;
console.log(a); //undefined
a = 10;

                再来一个例子:

var a = 10
function fn(){
    console.log(b);
    var b = 10;
}
console.log(a)

                转化为:

var a = 10
function fn(){
    var b
    console.log(b);
    b = 10;
}
console.log(a)

        现在理解为什么是undefined了吧!如果还有疑惑,请在评论区留言。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值