1、使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升的现象
if(true){
var a=10;
}
console.log(a); // 10
2、使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升
if(true){
let a=10;
}
console.log(a); // a is not undefine
3、使用 const 声明的是常量,必须要赋初始值,并且赋值后不能修改该常量的值
if(true){
const a=10;
}
console.log(a); // a is not undefine
console.log('--------------');
const b=20;
b=30;
console.log(b); // 报错 Assignment to constant variable
var | let | const |
---|---|---|
函数级作用域 | 块级作用域 | 块级作用域 |
变量提升(可以先使用再声明) | 不存在变量提升(必须先声明再使用) | 不存在变量提升(必须先声明再使用) |
值可改变 | 值可改变 | 值不可改变 |