概念
使用
var声明的变量,其作用域为整个函数内部,无论声明在函数的哪个位置。
在函数作用域外无法访问到var声明的变量
例子
function example() {
var x = 10;
console.log(x); // 10(内部可访问)
}
example();
console.log(x); // Error: x is not defined(外部不可访问)
关于var的变量提升
例子如下:
function example3() {
console.log(a); // undefined
var a = 5;
console.log(a); // 5
}
function example4() {
console.log(b); // error:Cannot access 'b' before initialization
let b = 10;
}
var声明的变量会提升到函数顶部。相当于下面的效果
function example3() {
var a // 被提升到函数顶部
console.log(a); // undefined
a = 5;
console.log(a); // 5
}
- 而
let/const存在暂时性死区。let和const声明的变量在作用域内会“绑定”到整个块级作用域,但在声明语句执行前不可访问。这个区域称为暂时性死区。