因为var在if、for循环中是没有作用域的,只有借助function的作用域来解决引用作用域外面的变量的问题;而let在if、for循环中是有块级作用域的,这是var所没有的功能,所以es6中使用let关键字而不是使用var。
本教程操作环境:windows10系统、ECMAScript 6.0版、Dell G3电脑。
es6中为什么不用var而是用let
因为在之前的JavaScript(ES5之前)中,var在像 if ,for循环中是没有作用域的,只有借助function的作用域来解决引用作用域外面的变量的问题
在ES6中加入了let,它在if和for中是有块级作用域的,let拥有块级作用域,一个{}就是一个作用域,也就是let声明块级变量,即局部变量.
const 也是有块级作用域的,当我们的修饰的标识符不想再被改变赋值时用const
建议在ES6开发中优先使用const,只有想改变一个标识符的时候才使用let
注意
1.const赋值后不能修改
2.用const定义标识符必须赋值
3.常量的定义是指向的对象不能修改,但是对象的属性可以修改
按照一般逻辑,变量应该在声明语句之后才可以使用,但在上面的代码中,是声明之前输出foo的值,且这个值为undefined,这就说明变量在声明之前就已经存在了。为什么用var会出现这种问题呢?
这里就是人们经常说的变量提升,即变量可以在声明之前使用,值为undefined。
我们console用let声明的变量bar,报错了,这就表示声明之前,变量bar是不存在的,这里就没有变量提升的现象出现。为了纠正这种现象,让大家更好的理解代码,let命令改变了语法行为,它所使用的变量一定要在声明之后使用,否则就会报错。
【相关推荐:javascript视频教程、web前端】
以上就是es6中为什么不用var而是用let的详细内容,更多请关注php中文网其它相关文章!