ES6:var 、const、let的使用和区别

本文详细介绍了ES6中的var、let和const的区别。var允许变量重复声明且存在变量提升,而let和const在同一个作用域内不允许重复声明。let和const具有块级作用域,其中const声明的是不可重新赋值的常量,但若常量是对象,其属性仍可修改。此外,let和const还引入了暂时性死区的概念,防止了变量提升带来的问题。

前言

本文主要介绍了ES6中var、const、let的使用和区别

基本介绍

let
  • let声明变量
const
  • const :声明常量
  • const声明的常量可以修改,但不能重新赋值

如:以下代码是正确的:

//引用数据类型
const info ={
	name:'Candy'
};
info.name='June';

而下面的代码是错误的:

//基本数据类型
const test ='hello';
test='world';
var
  • 声明变量
  • let替代了var去声明变量

三者的区别

1、重复声明
  • 重复声明:即已经存在的变量或常量,又声明了一遍
  • var允许重复声明,而let、const 不允许
  • 举例:
function func(a){
	let a=1;
}
func();

上述的代码会报错,因为变量a进行了2次声明,一次是在函数的形参处,另一处是在函数的内部进行了变量a的声明,因此会报错。

2、变量提升
  • var会提升变量的声明到当前作用域的顶部
  • 举例
    代码1:
console.log(a)
var a=1;

因为var会提升变量的声明到当前作用域的顶部,因此代码1等价于:

var a;
console.log(a)
a=1;

因此输出结果为: undefined

3、暂时性死区
  • 只要作用域内存在let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响
let a = 2;
function func){
	console.log(a)
	let a=1;
}
func();

分析:上述代码会报错

  • 首先,函数只有被调用的时候才会形成函数作用域;
  • 在函数里面声明了变量let a,因此变量a就会自动绑定func函数的作用域;
  • 执行函数里面的console语句的时候,由于变量a已经绑定了函数作用域,因此不再受到外部作用域的影响,即不使用函数外面的变量a的值,而输出a的时候还没对a进行声明和赋值,因此会报错。
4、块级作用域
  • var 没有块级作用域,而 let、const有块级作用域
  • 举例
    代码1:
for (var i=0;i<3;i++){
	// console.log(i)
}
console.log(i)

结果:
在这里插入图片描述

代码2:

for (let i=0;i<3;i++){
	// console.log(i)
}
console.log(i)

结果:
在这里插入图片描述
分析:
上述代码的块级作用域是指函数花括号之间的区域;由于var 没有块级作用域,因此在函数外的console语句能够正常执行;而 let、const有块级作用域,因此函数外的console语句会报错。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值