ES6_var和let和const的区别

本博客用于个人学习使用,资料可能来源于网络,未注明出处,敬请原谅。如有侵权,请联系博主进行删除。

变量提升

{
    var a = 10;
    console.log(a);//10
}
console.log(a);//10

//在执行前会先进行变量提升,提升到全局作用域最顶层,实际执行代码如下:
var a = undefined;
{
    a = 10;
    console.log(a);
}
console.log(a);

函数提升

foo()
function foo() {
    console.log(a)
    var a = 99
    console.log(a)
}

//这里的函数是先调用后声明,在执行之前会进行变量提升和函数提升,实际执行代码如下:
function foo() {
    var a = undefined
    console.log(a) //undefined
    var a = 99
    console.log(a) //99
}
foo()

用var声明的变量都可以用let来声明,我们在写代码的时候要尽量使用let来声明变量。let声明的变量,有块级作用域,我们写的for() while() 等等这些都是块级作用域。

{
    let b = 100
    console.log(b) //100
}
console.log(b) //报错,let声明的变量存在暂时性死区

{
    console.log(c) //报错,let声明的变量不存在变量提升
    let c = 'my name is lucy'
}

{
	const f = 'my name is Bob'
}
console.log(f) // 报错,const声明的变量也存在暂时性死区

const用于声明一个常量,声明的同时必须马上赋值,const不能再赋值

const c //SyntaxError: Missing initializer in const declaration
const e = 20
e = 30 //Uncaught TypeError: Assignment to constant variable

const虽然是常量,不允许修改默认赋值,但如果定义的是对象,那么是允许修改对象内部的属性、新增属性、删除属性的。但是重新给一个数据类型是不可以的,因为内存地址发生了改变。

const person={
	age:22
}
person.age = 23
console.log(person) // { age:23 }
person.sex = 'female'
console.log(person) // { age:23, sex: 'female }
delete person.age
console.log(person) // { sex: 'female' }
person = {} // 报错
person = [] // 报错

const和let的区别:
相同:const和let都不存在变量提升,都不能重复声明,都存在暂时性死区
不同点:const声明的常量不能再赋值,let声明的变量可以重复赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值