JavaScript变量声明提升

1 console.log(a);
2 var a=10;

控制台打印undefined,在ES2015之前,JavaScript只有全局作用域和函数作用域。在全局作用域中声明变量,变量声明被提升,但是变量赋值未被提升。

1 function letTest() {
2   let x = 1;
3   if (true) {
4     let x = 2;  // 不同的变量
5     console.log(x);  // 2
6   }
7   console.log(x);  // 1
8 }

let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是,var声明的变量只能是全局或者整个函数块的。

posted @ 2017-03-02 19:05  饿其体肤  阅读(101)  评论(0编辑  收藏  举报