es6 之 let 与 const

最近被问及let和var的区别,特地仔细研究一下
一、

使用var 两次输出都是obama,这是因为ES5只有 全局作用域和函数作用域,没有块级作用域 ,这带来很多不合理的场景。第一种场景就是你现在看到的 内层变量覆盖外层变量


let 则实际上为JavaScript新增了 块级作用域 。用它所声明的变量, 只在 let 命令所在的代码块内有效
二、
变量i是var声明的, 在全局范围内都有效 。所以每一次循环, 新的i值都会覆盖旧值 ,导致最后输出的是最后一轮的i的值。而使用let则不会出现这个问题。
三、
const 也用来声明变量,但是 声明的是常量 。一旦声明,常量的值就不能改变

猜你喜欢

转载自blog.csdn.net/weixin_39570075/article/details/80386121