ES6入门之------let 和 const

ES6入门之------let 和 const

一. let

1. let只作用在当前块级作用域内
我们首先来看一下什么是块级作用域:
1.通俗来说就是一对花括号中的区域{…}
2.块级作用域可以嵌套

{
....
}

if(){
....
}

for(){
.....
}
...

还有很多这里不就不举例了,我们特别来说一个不是块级作用域的例子
这里的代表一个对象而不是一个块级作用域

var obj = { a:1 }

2.let只作用在当前块级作用域内

如果在块级作用域外访问就会报错,而var可以在正常访问

for (let i = 0; i < 3; i++) {

};
console.log(i);

 for (var i = 0; i < 3; i++) {
   console.log(i);
 };
 console.log(i);

3. 使用let或者const声明的变量,不能在被重新声明,var可以被重复声明。

var guard= '我是嘟嘟左卫门!';
console.log(guard);
var guard= '我才是嘟嘟左卫门!';
console.log(guard);

 let guard= '我是嘟嘟左卫门';
 let guard= '我才是嘟嘟左卫门';//报错

4. let不存在变量提升
变量提升是执行上下文概念,在此不深入,有兴趣的小伙伴可以去了解一下。
声明一个变量前去使用一个变量。

 console.log(guard);
 var guard= '我是嘟嘟左卫门!';

 console.log(guard);
 let guard= '我是嘟嘟左卫门!';

5. 暂存死区

 var monkey = '我是美猴王';
 {
   console.log(monkey);
   var monkey = '我觉得我还能再抢救一下!';
}
 console.log(monkey);

 let monkey = '我是美猴王';
 {
   console.log(monkey);
   let monkey = '我觉得我还能再抢救一下!';
 }
 console.log(monkey);

es6中规定如果块级作用域中存在let、const声明的变量就会形成一个封闭的作用域,也就是说就是向上的作用域中存在同名的变量,也是拿不到的。所以monkey拿不到作用域外面的值。

二、const

1.常量必须在声明的时候赋值

const a = 1;

2.常量声明后不能被修改:

const NAME = '小明';
NAME = '小红';//报错

3.常量为引用类型的时候 可以修改该引用类型

const xiaoming = {
  age: 19,
  name: '小明'
};
console.log(xiaoming);
xiaoming.age = 22;
console.log(xiaoming);

怎么防止常量为引用类型的时候能被修改的情况
Object.freeze()

以下是一些扩展的知识:
Object.defineProperty()
Object.seal()
obj.hasOwnProperty(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值