es5以及之前,js里面的变量作用域都是函数作用域,变量在整个函数体里都是可以使用的。
直接上图。
可以看到在控制台里输出完0-9之后,又输出了10。这是我们不希望看见的。
但是C,Java里面变量的作用域都是块级作用域。如下图。
可以看出在循环体外面再次引用i的时候,编译器报错了。
es6新增了let命令和const命令,可以使定义的变量拥有块级作用域。如果在块级作用域以外使用
块级作用域内的变量会显示引用错误。如下图。
es5以及之前,js里面的变量作用域都是函数作用域,变量在整个函数体里都是可以使用的。
直接上图。
可以看到在控制台里输出完0-9之后,又输出了10。这是我们不希望看见的。
但是C,Java里面变量的作用域都是块级作用域。如下图。
可以看出在循环体外面再次引用i的时候,编译器报错了。
es6新增了let命令和const命令,可以使定义的变量拥有块级作用域。如果在块级作用域以外使用
块级作用域内的变量会显示引用错误。如下图。