-
var存在变量提升,let、const不存在变量提升
console.log(a); // undefined var a = 1; console.log(b); // Cannot access 'b' before initialization let b = 1; console.log(c); // Cannot access 'c' before initialization const c = 1;
-
let、const声明形成块作用域
if (1) { var a = 1; let b = 2; const c = 3; } console.log(a); // 1 console.log(b) // 报错:b is not defined ===> 找不到b这个变量 console.log(c) // 报错:c is not defined ===> 找不到c这个变量
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
let定义的常量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
-
同一作用域下var可以声明同名变量,let、const不行
var a = 1; console.log(a); // 1 var a = 2; console.log(a); // 2 let a = 1; console.log(a); let a = 2; console.log(a); // 控制台显示Identifier 'a' has already been declared
-
const说明
a. 一旦声明必须赋值,不能使用null占位
b. 声明后不能再修改
c. 如果声明的是复合类型数据,可以修改其属性
网友评论