因为ES6对变量提升的定义并不影响ES5的相关定义。所以,当以ES6为主的代码片中,使用var定义变量,则变量提升还是存在的。故而,我认为ES6只是对变量提升做了一些修订,并不是取消。若为取消,我认为应该在ES6环境下,设定var定义的变量也不存在变量提升。

This commit is contained in:
jacty
2016-07-25 16:44:47 +08:00
parent e18aa221da
commit 188d1a9576
+1 -1
View File
@@ -142,7 +142,7 @@ function bar(x = 2, y = x) {
bar(); // [2, 2]
```
ES6规定暂时性死区和不存在变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。
ES6规定暂时性死区和修订变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。
总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。