ES6标准之let和const的记录

在ES6之前,声明变量只有var和function两种方式,ES6有6种,除了ES5的两种,还有let和const,import和class。
个人感觉,let和const都是为了解决var声明的变量作用域比较混乱而出现的,它们都是块级作用域,使用块级作用域的原因是某些场景使用var会造成一些不好的影响,比如函数中声明同名变量,会造成变量提升,覆盖前面的变量,再比如,for循环中的i,不会在循环结束之后销毁,这就造成了循环变量泄漏为全局销量。

相同点:
1、块级作用域
2、暂时性死区
3、不可重复声明

不同点
1、const是一个常量,声明之后必须立即赋值
2、const声明对象时,指向对象内存地址,仍可以给对象赋值

由于块级作用域,for循环中的变量不影响循环块中的变量

for(let i = 0; i < 2; i++) {
	let i = 'abc'
	console.log(i)
}

输出结果:
‘abc’
‘abc’

你可能感兴趣的:(es6)