js 三种 声明变量方式的区别(var,let const)

 

1. var let const 区别

        var

                1. 可以被修改和重新声明

                2. 当在最外层声明时作用域为全局 函数内部声明时 作用域为局部

                3. 变量提升:所有变量和函数声明会移到作用域的顶部 并初始化赋值 undefined //如在声明前使用var声明的变量 值为undefined

        问题:var a =“1” var b = “2” if(b=“2”){var a =“3”} a会被重新声明  ,如果if里面去掉var声明则是重新赋值 
        (如下图)

                此问题只有var有;let和const 均无此问题

                

        let

                1. 可以被修改 不能重新声明

                2. 作用域是块级的 即{ } 解决了var的问题 

                        

                3. 变量提升:所有变量和函数声明也会移到作用域的顶部 但不会对值进行初始化 //如果在声明前使用let 变量会reference error

        const

                1. 作用域和let一样 都为块级 { }

                2. 不能被修改并且不能被重新声明 但是可以更新对象的属性(如果声明的是对象)

                3. 变量提升和let一样 都不会初始化值

                4.const变量 必须在声明时赋值

                        

总结:1.var声明是全局作用域或函数作用域,而let和const是块作用域。

           2.var变量可以在其范围内更新和重新声明; let变量可以被更新但不能重新声明;const变量既不能更新也不能重新声明。

           3.它们都被提升到其作用域的顶端。但是,虽然使用变量undefined初始化了var变量,但未初始化let和const变量。(当引用在声明后面的时候let变量也会被赋值undefined)
                

                

           4.可以在不初始化的情况下声明var和let,但是在声明期间必须初始化const

图一     重新声明

图二   重新赋值(更新)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值