js使用var声明变量(变量提升)与 let声明变量 和 直接声明变量的区别。详细讲解变量提升!

1.首先我们需要知道js的编译顺序

1.1 js的编译是从上至下的,也就是说是从第一行开始,到最后一行结束。
1.2 在js编译完成后,浏览器是有一个全局对象 window,

2#.先说使用var关键字声明的变量,先说结论:通过var关键字声明的变量,会在js代码语句执行前进行执行,也就是说只要是通过var声明的变量,无论在第几行,都会先进行声明(但是,仅仅是声明,并没有赋值!)

使用var声明变量,可以进行变量提升,下面我来说说什么是变量提升
变量提升: 会在js代码语句执行前进行执行,也就是说只要是通过var声明的变量,无论在第几行,都会先进行声明(但是,仅仅是声明,并没有赋值!)
下面是代码案例

		//1.    
         var a=123;
         console.log(a);  //直接打印123,没问题,因为js从上往下执行, a已经被声明并且被赋值为123
        //2.
         console.log(a);  //直接打印undefined,原因通过var关键字声明的变量,
                         //会在js执行前进行执行,也就是说只要是通过var声明的变量,
                         //无论在第几行,都会先进行声明(但是,仅仅是声明,并没有赋值!,所以打印结果是undefined)
         var a=123;

3#.let关键字声明变量 先说结论:通过let关键字声明的变量,无法进行变量提升!也就是说,通过let关键字声明的变量只能在声明后进行使用,否则会报错!

代码案例如下:

		 //1.
        //  let a=123;
        //  console.log(a);  //直接打印123,没问题,因为js从上往下执行, a已经被声明并且被赋值为123

        //2.
        //  console.log(a);  //直接报错,原因通过let关键字声明的变量,
        //                  //无法进行变量提升,js不会提前声明,只有执行到该变量声明的语句时才会声明变量
        //                  //由于在声明前使用变量,所以会报错!
        //  let a=123;     

4#.直接声明变量,不使用任何关键字,先说结论:直接声明的变量,无法进行变量提升!也就是说,直接声明的变量只能在声明后进行使用,否则会报错!

代码案例如下

		//1.
 		// a=123;
        //console.log(a);  //直接打印123,没问题,因为js从上往下执行, a已经被声明并且被赋值为123
        //2.
        // console.log(a);  //直接报错,原因直接声明的变量,
        //                  //无法进行变量提升,js不会提前声明,只有执行到该变量声明的语句时才会声明变量
        //                  //由于在声明前使用变量,所以会报错!
        //a=123;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南工gjl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值