ES6查漏补缺【var,let,const】

ES5中,声明变量用var,ES6为什么会新增let和const两个关键字呢?

var的四个缺点

1.存在变量提升

console.log(a) // undefined
var a = 0
console.log(a) // 0

2.同一个作用域下可以重复声明

var x = 1
var x = 2
console.log(x) //2

3.不存在块级作用域

if (false) {
    var x = 1
}
console.log(x) // undefined

//  <===>

var x
if (false) {
    x = 1
}
console.log(x) // undefined

4.不可以限制修改

var只能声明变量,不能声明常量

var pi = '3.14'
pi = 11
console.log(pi) // 11

let & const

1.相同点:

  • 都不存在变量提升,正确的使用步骤:必须先声明,再使用
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
  • 同一个作用域下不可以重复声明
// 在同一个作用域下不可重复声明
let a = 1
let a = 2
const b = 2
const b = 3
console.log(a)
console.log(b)

在这里插入图片描述

  • 都存在块级作用域
{
	let c = 99
	console.log(c) // 99
	const a = 100 
	console.log(a) // 100
}
console.log(c)  // c is undefined

2.不同点:

  • let:可多次赋值
let a = 1;
a = 2;
console.log(a) //2
  • const:一旦赋值了,就不能再次赋值了,声明的时候必须赋值(不能先定义再赋值)
const b = 1;
b = 2;
console.log(b) // Uncaught TypeError: Assignment to constant variable.

3.const

  • 命名规范:
    • const声明的常量一般采用大写字母配合下划线
    • 例如:const PI = Math.PI
    • const VUE_APP_BASE_URL = “http://xxx.com/api/cart”

两个问题

const定义的数组可以做pop、push等操作吗?
const定义的对象可以改变属性值吗?
答:数组和对象都是引用类型,我们只是通过名字修改了内存地址里面的值,所以可以做引用类型改动操作。但如果对常量重新赋值,就会报错。

水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!

相关资料


  • https://es6.ruanyifeng.com/
  • https://www.bilibili.com/video/BV1n34y1B7f2?p=3

水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值