var声明变量存在变量提升,let和const没有
变量提升:在一开始的时候把所有的声明先执行
(JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。)
console.log(a) ------------undefined, a已声明还没赋值,默认得到undefined值
var a = 100;
console.log(b)-------------报错 :b is not defined ===> 找不到b这个变量
let b =100;
console.log(c)
const c=100;------------- 报错:c is not defined ===> 找不到c这个变量
let和const存在作用域,var没有
const定义的复杂变量,可以修改属性,const定义的不可以为null且不能修改
// 块作用域
{
var a = 1;
let b = 2;
const c = 3;
// c = 4; // 报错,const不能修改
var aa;
let bb;
// const cc; // 报错,必须初始化(即必须赋值)
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
}
console.log(a); // 1
// console.log(b); // 报错,只能在块作用域里访问
// console.log(c); // 报错,只能在块作用域里访问
```
### 同一作用域下let和const不能声明同名变量,而var可以
```
var a = 100;
console.log(a); // 100
var a = 10;
console.log(a); // 10
let a = 100;
let a = 10;
// 控制台报错:Identifier 'a' has already been declared ===> 标识符a已经被声明了。
```
本文深入探讨JavaScript中var、let与const的变量声明特性,解析变量提升、作用域限制及重新声明的规则,帮助读者理解不同声明方式对代码行为的影响。
2307

被折叠的 条评论
为什么被折叠?



