ES6-为什么要用let和const,而不用var

在IDEA中编写js代码时,总会遇到下面这样的提示:

意思是让用let或const代替var,但为什么要这么做呢?var和let的区别又在哪呢?

很明显,a变量重复定义了,但运行起来,我们发现却没有报错,而且控制台输出的是555

也就是说,var运行重复定义,let不允许重复定义。

控制台输出:undefined

也就是说先使用,后定义是被允许的。

按道理说,for循环中的变量和循环外不是一个作用域,但这里却可以在循环外调用。

当我们改成let后,控制台立刻就报错了:i is not defined

const和其他语言类似,是用来定义常量的关键字,一旦定义,值不可改变。

可以避免变量被覆盖,变量被污染等问题的出现。