概述
var与let、const的区别
在最新的 ES6 中,新添加了两个用于变量声明的关键字 let 和 const
一、var声明的变量会挂载在window上,而let和const声明的变量不会:
var a = 'a';
console.log(a,window.a) //abc abc
let b = 'b';
console.log(b,window.b) //b undefined
const c = 123;
console.log(c,window.c) //123 undefined
二、var声明变量存在变量提升,let和const不存在变量提升
1 console.log(a); // undefined ==> a已声明还没赋值【var a】,默认得到undefined值
2 var a = 100;
1 console.log(b); // Uncaught ReferenceError: b is not defined ==> 报错:找不到b这个变量
2 let b = 10;
1 console.log(c); // Uncaught ReferenceError: b is not defined ==> 报错:找不到b这个变量
2 const c = 10;
三、let和const声明形成块作用域
1 {
2 var a = 100;
3 let b = 10;
4 }
5 console.log(a); // 100
6 console.log(b) // 报错:b is not defined ===> 找不到b这个变量
1 if(true){
2 var a = 100;
3 const c = 1;
4 }
5 console.log(a); // 100
6 console.log(c) // 报错:c is not defined ===> 找不到c这个变量
四、同一作用域下let和const不能声明同名变量,而var可以
1 var a = 100;
2 console.log(a); // 100
3
4 var a = 10;
5 console.log(a); // 10
1 let a = 100;
2 let a = 10; // 控制台报错:Identifier 'a' has already been declared ===> 标识符a已经被声明了。
五、暂存死区
1 var a = 100;
2 if(1){
3 a = 10;
4 //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
5 // 而这时,还未到声明时候,所以控制台Error:a is not defined
6 let a = 1;
7 }
六、const
1 /*
2 * 1、一旦声明必须赋值,不能使用null占位。
3 * 2、声明后不能再修改
4 * 3、如果声明的是复合类型数据,可以修改其属性
5 * */
6
7 const a = 'abc';
8
9 const list = [];
10 list[2] = 'abc';
11 console.log(list); // [empty × 2, "abc"]
12
13 const obj = {a:100};
14 obj.a = 'abc';
15 console.log(obj); // {a:'abc'}
最后
以上就是高兴发卡为你收集整理的java const let_JavaScript 中 var 和 let 和 const 关键字的区别的全部内容,希望文章能够帮你解决java const let_JavaScript 中 var 和 let 和 const 关键字的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复