ES6之let var const的区别

在介绍let var const之前,我们先对以下几个点,进行了解

变量提升,又名预解释,预解析,意思是在浏览器拿到js代码将要执行之前,会整体的解读一遍,把所有var声明的变量和function声明的函数提前定义

变量提升

变量在声明之前进行了使用,并且不会报错,得到的值为undefined

暂时性死区

在使用let const声明的变量之前,都不能使用这个变量,否则就会报错,在这之前的代码块,对于这个声明的变量来说,叫做暂时性死区


let var const的区别主要体现在这几个方面

1.是否存在变量提升

用var声明的变量存在变量提升;let const不存在变量提升

2.是否存在暂时性死区

用let,const声明的变量之前,都不能使用这个变量,否则就会报错,在这之前的代码块,对于这个声明的变量来说,叫做暂时性死区 var 不存在暂时性死区

3.是否允许重复声明变量

var可以重复声明变量,let const 不可以

4.是否存在块级作用域

作用域分为 全局作用域 局部(函数)作用域 块级作用域

let const 存在块级作用域,var不存在
//例子
let a=1
if(a==1){
    let a=2
}
console.log(a) //a为1

5.是否能修改声明的变量

let var声明的变量可以进行重复修改
const 的值是常量,一旦赋值,就不能进行修改
使用const声明一个引用数据类型,此时的值是一个内存地址;只要不去修改内存中的地址,里面的内容是可以被重复进行修改的
​
//const声明的变量,必须要进行初始化,否则会报错

eg:const a=1  不能为const a;

举例说明块级作用域

// 块级作用域,以及let var声明同一个变量,不同的体现
//
//1.使用var进行循环
var arr=[]
for(var i=0;i<2;i++){
  arr[i]=function(){
    console.log(i)
  }
}
arr[0]() //2
arr[1]() //2
​
//2.使用let进行循环
//let形成一块独立的作用域,会独立向上查找
let arr=[]
for(let i=0;i<2;i++){
  arr[i]=function(){
    console.log(i)
  }
}
arr[0]() //0
arr[1]() //1
//
//
//3.使用var声明i,实现let声明的结果,需要使用到闭包
//函数自调用的方法进行实现
        var arrss = []
        for (var i = 0; i < 2; i++) {
            arrss[i] = (function(i) {
                    return function() {
                        console.log(i)
                    }
                })(i) //将每次遍历的i作为实参,传递给自调用的函数,通过函数返回值,将打印的结果进行返回
        }
        arrss[0]()//2
        arrss[1]()//2

以上只是个人了解,如有需要改正的地方,还希望小伙伴们的指点哟!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值