变量声明的过程:变量的声明分为三个阶段:创建(create),初始化(initialization)和赋值(assignment).创建也就是在内存图中的不知名区创建一个变量名,初始化是把将变量赋值为undefined,赋值指等号有右边的值赋值给变量.
let的特性有以下几点:
- let 声明的变量是支持块级作用域的,而var没有此限制。
var a= 1
window.a===a // true
let b =1
windw.b===b // false
{let i=0}
console.log(i) // 报错
说明没有完成创建
-
let 不能重复声明已存在的变量
-
let 有暂时死区,不会被提升。let的不会提升指是初始化和赋值不会被提升.而var会提升创建和初始化的过程,所以下面的代码中,他们的打印的结果是不一样的
console.log(i)
console.log(j)
var i = 1
let j = 1;
i打印出了undefined,说明完成了初始化。j出现了报错,说明没有完成初始化。
- let与for语句的搭配
for(let i=0 ;i<arr.length;i++){}for语句的括号给let形成了一个块级作用域,所以语句与let i=0;for( i=0 ;i<arr.length;i++){}是大不相同的.
const与let相似,但是
- const声明的变量只可读