在 ES6 之前,JavaScript 只有两种作用域:
- 全局变量:在函数外声明,但在 JavaScript 程序的任何地方都可以访问。
- 函数内局部变量:函数内使用 var 声明的变量只能在函数内容访问,如果不使用 var 则是全局变量。
ES6 可以使用 let、const关键字来实现块级作用域。
var与let/const的区别
let/const
声明的变量只在let/const
命令所在的代码块 {} 内有效,在 {} 之外不能访问。 var声明的变量{}也可访问。
let demo1 = '23';
{
let demo1 = '234';
console.log(demo1);//234
}
console.log(demo1)//23
- 使用 var 关键字声明的全局作用域变量属于 window 对象。
使用let/const
关键字声明的全局作用域变量不属于 window 对象,所以不可以用window. 变量名
的方式访问这些变量。
var i = 5;
for (var i = 0; i < 10; i++) {
//....
}
console