ES6中对let cons的解释

24 篇文章 0 订阅
7 篇文章 0 订阅

let :代码块内有效,相当于{}内有效,使用let声明的不存在变量声明提升,所以不能再定义前使用,即使再代码块外部有相同名的变量,也无法再里面提前使用

比如:

var one=10;
if(true){
	console.log(one);  //会报错,因为再这个代码块中,下面有let 声明one这个变量,所以不能这样用
	let one=20;
	console.log(one)    //20
}
console.log(one) ;     //10  因为再上面使用let定义的one只在上面那个代码块中有效,不影响外面的

这里说的代码块就是一个{}包起来的范围就是一个代码块

const:常量的声明,创建常量的时候必须赋值,否者会报错,常量创建后(地址)不可更改,就是说普通的数据类型不可以修改,复杂型数据再不修改其地址的情况下是可以被更改的

如:

const two=20;
two=10;   // 报错,这样就等于改变了它原来指向的地址了

const arr=[1,2,3];
arr[1]=5;  //这样修改不会有问题,因为没有修改arr地址的指向,所以ok
//函数也是如此

//总而言之:就是不能修改声明时常量指向的地址

let const var 的区别

1:挂载: 使用var声明的变量默认会挂载到window上,let和const不会
2:变量提升: 使用var声明的变量会有变量提升,let和const不会
3:块级作用域的产生: 使用let和const声明会形成块级作用域,只在当前块级作用域有效,使用var声明的不会产生块级作用域,只会有函数内和函数外的作用域
4:暂存死区: 如果再一个块级作用域给一个再当前作用于有使用let/const声明的同名变量提前赋值时,会报错 ;如下

var a = 100;
if(true){
    a = 10;
//在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
    // 而这时,还未到声明时候,所以控制台Error:a is not defined
    let a = 1;
}

5:同名变量: 再同一代码块中,let/const不能声明同名变量,var可以

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值