ES6之解构赋值

ES6之解构赋值


ES6中的解构就是从 数组或对象中提取值,对变量进行 赋值
例如:

//数组
let [a,b,c]=[1,2,3]
console.log(a,b,c)  //1,2,3

let [a,b,...c]=[1,2,3,4,5,6]
console.log(a,b,c)  //1,2,[3,4,5,6]

//对象
let {a,b,c}={a:1,b:2,c:3}
console.log(a,b,c)  //1,2,3

let {a,c,b}={a:1,b:2,c:3}
console.log(a,c,b)  //1,3,2
//对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

let {a,b,...c}={a:1,b:2,c:3,d:4}
console.log(a,b,c)  //1,2,{c:3,d:4}

以上是解构成功的情况
如果解构不成功,变量的值就等于undefined
如:

let [a]=[]
console.log(a,b,c)  //undefine

let [a,b]=[1]
console.log(a,b,c)  //1,undefine

如果等号的右边不是数组,那么将会报错。

let [a] = 1;
let [a] = false;
let [a] = NaN;
let [a] = undefined;
let [a] = null;
let [a] = {};

解构嵌套结构对象数组

//1、
let obj = {
  p: [
    'Hello',
    { y: 'World' }
  ]
};

let { p, p: [x, { y }] } = obj;
x // "Hello"
y // "World"
p // ["Hello", {y: "World"}]

//2、
const node = {
  loc: {
    start: {
      line: 1,
      column: 5
    }
  }
};

let { loc, loc: { start }, loc: { start: { line }} } = node;
loc  // Object {start: Object}
start // Object {line: 1, column: 5}
line // 1

最后一次对line属性的解构赋值之中,只有line是变量,loc和start都是模式,不是变量,所以赋值成Object

解构赋值的用途:

1)交换变量的值

	let x = 1;
	let y = 2;
	
	[x, y] = [y, x];

2)从函数返回多个值

	// 返回一个数组
	function example() {
	  return [1, 2, 3];
	}
	let [a, b, c] = example();
	
	// 返回一个对象
	
	function example() {
	  return {
	    foo: 1,
	    bar: 2
	  };
	}
	let { foo, bar } = example();

3)函数参数的定义

	// 参数是一组有次序的值
	function f([x, y, z]) { ... }
	f([1, 2, 3]);
	
	// 参数是一组无次序的值
	function f({x, y, z}) { ... }
	f({z: 3, y: 2, x: 1});

/4)提取 JSON 数据

	let jsonData = {
	  id: 42,
	  status: "OK",
	  data: [867, 5309]
	};
	
	let { id, status, data: number } = jsonData;
	
	console.log(id, status, number);
	// 42, "OK", [867, 5309]

5)遍历 Map 结构

	const map = new Map();
	map.set('first', 'hello');
	map.set('second', 'world');
	
	for (let [key, value] of map) {
	  console.log(key + " is " + value);
	}
	// first is hello
	// second is world
	

6)输入模块的指定方法

	import { Input } from 'antd'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值