ES6(2) 解构赋值(数组和对象)

1.解构赋值(Destructuring)
ES6 允许按照一定模式,从数组和对象中提取值(变量值的来源),对变量进行赋值(作用),这被称为解构。
2.数组的解构赋值

  • 按下标一一对应地去赋值
let arr =[1,2,3]
let [a,b,c ] = arr
console.log(a,b,c)  //1 2 3
  • 左右数量不等
let [,b,c] = [1,2,3]
console.log(b,c)   // 2,3
let [a,b,c] = [1,2]
console.log(a,b,c) //1 2 undefined
  • 跳过部分
let [a, ,c] = [1,2,3]
console.log(a,c)  //1 3
  • 默认值
let [a,b,c=10] = [1,2,3]
console.log(a,b,c)  // 1 2 3
  • 嵌套
let [a,b,c] = [1,2,[3,4,5]]
console.log(a,b,c)     // 1 2 [ 3, 4, 5 ]

3.对象的解构赋值:定义了两个变量;给这两个变量赋值;

  • 本质-按属性名的一一对应关系来进行赋值
  • 解构规则
    必须要通过键名进行关联。
    没有键名就是undefined
    对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。
  • 默认值
  • 将现有对象的属性,赋值到某个变量
	<script>
	let{max,min,abs}=Math;
	console.info(max(2,8,6,5,9))
	console.info(min(2,8,6,5,9))
	console.info(abs(2,8,6,5,9))//绝对值
	</script>
  • 沿着原型链进行
    =号的右边是一个空数组,它是一个对象,它自己有没有一个属性名为push?它自己没有,但它的隐式原型上有push属性。所以,这里的push就是:[].proto.push
  • 函数参数中的解构赋值
	<!-- 函数参数中的解构赋值 -->
	<script>
	function f(obj) {
    	console.info (obj.lastName,obj.age);
	}
	f({
    	lastName:"jake",
    	age:30
	});
	</script>

	<!-- 函数参数中的解构赋值简化 -->
	<script>
    	function f(lastName,age) {//形参
        	console.info(lastName,age);
    	}
    	f({lastName: "jake",age: 30 });//实参
	</script>

4.解构赋值的应用

  • 交换变量的值
	<!--交换变量的值 -->
	<script>
		let a=2;
		let b=4;
		[a,b]=[b,a]
		//把右边看作一个整体,就是一个数组,然后左边就是解构赋值。
		console.info(a)
		console.info(b)
	</script>
  • 快速获取从函数中返回的多个值
	<script>
		// 返回一个数组
		function example() {
  		return [1, 2, 3];
		}
		let [a, b, c] = example();
		console.log(a,b,c);//   1  2  3

		// 返回一个对象
		function example() {
  			return {
    			foo: 1,
    			bar: 2
  			};
		}
		let { foo, bar } = example();
		console.log(foo,bar);   //1  2
	</script>
  • 获取json数据中的值
	<script>
		let jsonData = {
 	 		id: 42,
  			status: "OK",
			data: [867, 5309]
		};
		let { id, status, data: number } = jsonData;
		console.log(id, status, number);
		// 42 "OK" (2) [867, 5309]
	</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

么心么肺

你的鼓励将是我学习的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值