【ES6】var、let 和 const 的区别

一、let

特点:

  • 块级作用域有效
    • 防止内层变量影响外层变量
    • 只能在大括号内有效
    • 在括号内才有块级作用域
    • 防止循环变量变全局变量
for (let a =0; a>=20; a++) {
    
}
console.log(a);  // 报错
  • 不存在变量提升,不能重复声明
console.log(a);
let a = 0; // 报错
  • 暂时性死区
var num = 1;
if(true) {
// 这是一个花括号,let声明的变量就会绑定到这个块级作用域里,不会依次向上找
	console.log(num); // num is not defined
	let num = 3; // 不能变量提升
}

二、const

作用:声明常量,常量就是值(内存地址),不能变化的量。

特点:

  • 块级作用域
  • 声明常量必须赋初始值
  • 常量赋值后,值不能修改,但是复杂的数据类型可以修改,但不可以赋值

例子:

const a = 99;
a = 10; // a 不能修改

/--- 内部的值可以修改,但不可以赋值
const arr = [1,52,12,36,4];
arr[0] = 85; // 如果输出,结果为[85,52,12,36,4]
arr = [12,5,3,2,0] // 如果输出,则报错

三、var

特点:

  • 函数作用域
  • 可以变量提升(即可以预解析)
  • 值可以更改
varconstlet
函数作用域块级作用域块级作用域
变量提升不存在变量提升不存在变量提升
值可更改值可更改值不可更改(复杂的数据类型,如数组、对象可以被修改)

注意:

  • 当使用的值不需要函数的定义,数学公式中(如PI)恒定不变的数值,就是用const,这样效率会变高。
  • let 和 var 最大的区别就是,let 不能变量提升,这也大大显示出来了let的优点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值