var、let 和 const 的区别

var、let 和 const 的区别

varletconst
函数级作用域块级作用域块级作用域
变量提升不存在变量提升不存在变量提升
值可更改值可更改 (注意作用域)一旦声明变量必须赋值,声明之后不能再修改,如果声明的是复合类型数据,可以修改其属性
  1. var声明变量会挂载在widow上,而let和const声明的变量不会挂载在widow上
var a = 111;
console.log(window.a);//111
let b = 222;
console.log(window.b);//undefined
const c = 333;
console.log(window.c);//undefined
  1. var声明的变量存在变量提升,let和const不存在变量提升
console.log(a);//undefined
var a = 111;
console.log(b);//error
let b = 222;
console.log(c);//error
const c = 333;
  1. let和const声明形成块作用域
if(1){
	var a = 111;
	let b = 222;
	const c = 333;
}
console.log(a);//111
console.log(b);//error
console.log(c);//error

  1. 同一作用域下let和const不能声明同名变量,var可以声明同名变量
var a = 111;
console.log(a);//111
var a = 1111;
console.log(a);//1111

const b = 222;
console.log(b);//error
const b = 2222;
console.log(b);//error

let c = 333;
console.log(c);//error
let c = 3333;
console.log(c);//error

  1. const一旦声明变量必须赋值,声明之后不能再修改,如果声明的是复合类型数据,可以修改其属性。var和let声明的都可以做修改,但是let有作用域哦。
//有一回被问着,const声明后是否可以修改,结果就被教育了,hahah~
const arr = [1,2,3]
arr[2] = 22
console.log(arr);//[1, 2, 22]

const obj = {a:1,b:2,c:3}
obj.b = 22
console.log(obj);//{a: 1, b: 22, c: 3}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值