es6-01-let、const、块级作用域

1.let的使用

	let a = 1;
	console.log(a);
  • let声明的变量只在所在的代码块有效,有块级作用域效果。
  • 使用let声明变量时,需要先声明后使用。否则报错:ReferenceError: Cannot access ‘x’ before initialization
  • 如果块级作用域种存在let命令,那么所声明的变量就绑定在这个区域了,不会受外部区域影响。与此同时该区域的引用规则为let的引用规则。在let命令之前和块级作用域之后这段区域称之为暂时性死区(temporal dead zone,TDZ)
  • let声明方式在本块级作用中不允许重复性声明

2.const的使用

	const PI = 3.14
  • 一但声明,其值不允许改变
  • 因为值无法改变,所以一但声明必须赋值,否则没有意义。
  • 本质: const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。
    - 这对于简单类型,值就保存在内存地址中
    - 对于复合类型,内存地址是另一个地址,const只保证这个内存地址不 变,而另一个地址指向的内容可不可变是不可以控制的。

3.块级作用域

3.1 为什么需要块级作用域?

  • 内层变量可能会覆盖外层变量
var tmp = new Date()
function f(){
console.log(tmp);
 if(false){
    var tmp = 'sss'
 }   
}
undefined
  • 用来计数的的循环变量会泄露为全局变量
var s = 'hello'
console.log(i);//undefined
for(var i = 0; i < s.length;i++){
    console.log(s[i]);
}
console.log(i);//5
undefined
h
e
l
l
o
5

补充:

  • es6声明变量的6种方法:var、function、let、const、import、class
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值