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

前言

本文主要介绍了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语句会报错。

猜你喜欢

转载自blog.csdn.net/Junehhh/article/details/130820176