老师好,我有个问题像请教一下

来源: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回答

好帮手慕星星

2019-07-11

你好,可能是webstorm编辑器版本的问题,所以会有提示。

因为es5中没有块级作用域,所以for循环中用var声明的变量是全局变量,在for循环外面也可以获取到变量值,这是正常的现象。

es6中才有了块级作用域的概念,也就是用const和let进行声明,那么声明的变量只会在当前作用域中进行使用。

第二阶段中会讲解作用域的问题:

http://img.mukewang.com/climg/5d26a7b40001d4b207160278.jpg

最后一个阶段中会讲解es6:

http://img.mukewang.com/climg/5d26a7c70001b56806540287.jpg

目前es6应用还不是特别广泛,部分内容还需考虑兼容性问题,所以现在阶段不用考虑后面的问题,用var进行声明就可以。

祝学习愉快!

0

0 学习 · 40143 问题

查看课程