ES6变量新特性
ES6中变量的新特性主要是为了解决旧版本javascript中变量声明的缺点
ES5通过var声明的变量的缺点
- var可以重复声明变量
<script>
a = "This is A"
a = "No, I am A!"
alert(a)
</script>
-
var无法定义常量
-
没有块级作用域: {}外部仍然可以调用变量a
<script>
if (true) {
a = "you can only find me here"
}
alert(a)
</script>
ES6中变量申明的新特性
- 通过
let
或const
声明的变量不可以被重复声明,否则将会报错
<script>
let a = "This is A"
let a = "No, I am A!"
alert(a)
const b = 1
const b = 2
alert(b)
</script>
浏览器将会报错:
Uncaught SyntaxError: Identifier 'a'has already been declared
- 通过
let
声明的变量可以修改; 通过const
声明的变量不可以修改
浏览器将会报错:
Uncaught SyntaxError: Assignment to constant variable at xxx.html:line
- 通过
let
或const
声明的变量,都具有块级作用域
<script>
if (true) {
let a = "you can only find me here"
const b = 999
}
alert(a)
alert(b)
</script>
浏览器将会报错:
Uncaught ReferenceError: a is not defined at xxx.html:line
浏览器将会报错:Uncaught ReferenceError: b is not defined at xxx.html:line