ECMAScript笔记——解构赋值

变量的的解构赋值

ES6允许我们,通过数组或者对象的方式,对一组变量进行赋值,这被称为解构。
解构赋值在实际开发中可以大量减少代码量,并且让程序结构更清晰。

数组的解构赋值

举例1:

通常情况下,为一组变量赋值:

let a = 0;
let b = 1;
let c = 2;

现在可以通过数组解构的方式进行赋值:

let [a,b,c] = [1,2,3];

二者的效果是一样的,但解构赋值的方式大量减少了代码量,而且结构更清晰了。

举例2:

{
	//一个变量时
	let [a = true] = [];
	console.log(a);	//输出结果,true
}

{
	//两个变量时
	let [a,b] = ['1'];	//a赋值为1,b没有赋值
	console.log(a + ',' + b);	//输出结果,1,undefined
}

{
	//两个变量时
	let [a,b = '2'] = ['1'];	//a赋值为1,b为2
	console.log(a + ',' + b);	//输出结果,1,2
}

在解构赋值时,是允许使用默认值(缺省值)的,当变量没有赋值时,使用默认值。

举例3:

{
	let [a,b = '2'] = ['1',undefined];	//虽然b被赋值undefined,但是b会采用默认值
	console.log(a + ',' + b);
}

{
	let [a,b = '2'] = ['1',null];	//b被赋值为null
	console.log(a + ',' + b);	//输出结果,1,null
}

上方代码分析:

  • undefined:相当于什么都没有,此时b采用默认值。
  • null:相当于有值,但值为null。

对象的解构赋值

举例1:

let {a,b} = {b:'2',a:'1'};
console.log(a + ',' + b);	//输出结果,1,2

上方代码分析:

  • 对象的解构与数组的解构,有一个重要的区别:数组的元素是按次序排列的,变量的取值由它的位置决定。
  • 对象的属性没有次序,是根据键来取值的。

举例2:

let a = 'Hello';
{a} = {a:'1'};
console.log(a);

如果变量a在解构之前就已经定义了,此时你再去解构,就会出问题。
要解决报错,只要在解构的语句外边,加一个()即可:

let a = 'Hello';
({a} = {a:'1'});
console.log(a);	//输出结果,1

字符串解构

var str = 'helloWorld';
var [a,b,c,d,e,f] = str;
console.log(a);	//输出结果,h
console.log(b);	//输出结果,e
console.log(typeof a);	//输出结果,string

字符串也可以解构,这是因为,此时字符串被转换成了一个类似数组的对象。

For of 循环

举例1:

let arr1 = [1,2,3];

for(let key in arr1){
	console.log(key);	//输出结果,0,1,2
}

for(let value of arr1){
	console.log(value);	//输出结果,1,2,3
}

举例2:

let user = new Map();
user.set('username','admin');
user.set('password','12345');
console.log(user);

for(let [key,value] of user){
	console.log({key,value});
}

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

  • for of循环可以避免开拓内存空间,增加代码运行效率。
  • for of获取的是数组的值,for in获取的是index索引值。
  • for of既可以遍历数组,也可以遍历Map对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值