Es6复习之(let、const 、var)
1、 var 声明与变量提升
使用var
关键字声明的变量,无论声明位置在何处,都会被视为声明于所在的函数顶部。(如果声明不在任意函数内,则视为全局作用域的顶部),这就是变量提升。
看以下例子:
function str(x) {
if (x) {
var value = "雷神"
return value
} else {
return null
}
}
第一眼看上去好像是:x
为true
时,变量value
才被创建。无论如何都会被创建,JS
引擎在后台对str
做了如下调整:
function str(x) {
var value; // undefined
if (x) {
var value = "雷神"
return value
} else {
return null
}
}
value
变量被提升到了顶部,而初始化则保留在原处,因为它并没有被初始化。
Es6
引入的块级作用域,正是解决这个问题的。
2、let 声明
let
与var
声明的语法一致,let
会将变量的作用域限制在当前的代码块中,let
声明并不会被提升到当前的代码块的顶部,因此需要我们手动写到最顶部,以便让变量在整个代码内部可用。
示例:
function str(x) {
if (x) {
let value