ECMAScript 6中的块作用域功能是什么?
任何人都可以帮助我理解块区域功能与ECMAScript 5相比的主要区别吗?
新款let
和const
ES2015(又称"ES6")与古老版相比有四个主要差异var
:
他们有块范围
它们没有悬挂(好吧,它们有点悬挂,但是有用的方式)
重复声明是错误
在全局范围内使用时,它们不会创建全局对象的属性(尽管创建全局变量;这是ES2015的新概念)
var
变量存在于它们声明的函数中(或全局地,如果全局声明),它们不限于它们所在的块.所以这段代码是有效的:
function foo(flag) {
a = 10;
if (flag) {
var a = 20;
}
return a;
}
console.log(foo(false)); // 10
console.log(foo(true)); // 20