老师好,我有个问题像请教一下
来源:2-1 for语句(最常用的循环)
秋荏苒
2019-07-11 00:50:04
我使用 webstorm 一直都提示不要使用 `var` 来声明变量,然后我简单搜索了一下,ES6 中,似乎新增了 `const` 及 `let` 两种新的声明变量的关键字,其中 `const` 应该是用来声明常量的,既然是常量,那么像循环数字这种操作,显然不能用其来声明,且确实会报错,然后就是 `let` ,它的作用貌似是声明局部变量?不知道我的理解是否正确,我试了一下,在 `for` 循环外,取变量 `i` 的值是会提示 `not defined` 的,而如果使用 `var` 在 `for` 循环中声明变量,那么在 `for` 循环外,它居然还能取到值,这似乎是不合理的,那么是否意味着,我们应该遵循 es6 的要求,不再推荐使用 `var` 来声明变量?
1回答
你好,可能是webstorm编辑器版本的问题,所以会有提示。
因为es5中没有块级作用域,所以for循环中用var声明的变量是全局变量,在for循环外面也可以获取到变量值,这是正常的现象。
es6中才有了块级作用域的概念,也就是用const和let进行声明,那么声明的变量只会在当前作用域中进行使用。
第二阶段中会讲解作用域的问题:
最后一个阶段中会讲解es6:
目前es6应用还不是特别广泛,部分内容还需考虑兼容性问题,所以现在阶段不用考虑后面的问题,用var进行声明就可以。
祝学习愉快!
相似问题