21 解构赋值

解构赋值
	为什么:
		更方便的对一组变量赋值
		从ES6开始,JavaScript引入了解构赋值,可以同时对一组变量进行赋值
数组解构赋值
		var [x, y, z] = ['hello', 'JavaScript', 'ES6'];
			注意,对数组元素进行解构赋值时,多个变量要用[...]括起来
		let [x, [y, z]] = ['hello', ['JavaScript', 'ES6']];
		let [, , z] = ['hello', 'JavaScript', 'ES6']; // 忽略前两个元素,只对z赋值第三个元素
对象解构赋值
		对一个对象进行解构赋值时,同样可以直接对嵌套的对象属性进行赋值,只要保证对应的层次是一致的
		var person = {
			name: '小明',
			age: 20,
			gender: 'male',
			passport: 'G-12345678',
			school: 'No.4 middle school'
		};
		// 把passport属性赋值给变量id:
		let {name, passport:id} = person;
		name; // '小明'
		id; // 'G-12345678'
		// 注意: passport不是变量,而是为了让变量id获得passport属性:
		passport; // Uncaught ReferenceError: passport is not defined

解构赋值的默认值
		对象属性进行赋值时,如果对应的属性不存在,变量将被赋值为undefined,避免了存在的属性返回undefined的问题,解构赋值还可以使用默认值
				// 如果person对象没有single属性,默认赋值为true:
				var {name, single=true} = person;
				
				// 声明变量:
				var x, y;
				// 解构赋值:
				{x, y} = { name: '小明', x: 100, y: 200};
				// 语法错误: Uncaught SyntaxError: Unexpected token =
				这是因为JavaScript引擎把{开头的语句当作了块处理,于是=不再合法。解决方法是用小括号括起来:
				({x, y} = { name: '小明', x: 100, y: 200});
				
			

  

posted on 2019-01-12 15:11  悬剑  阅读(162)  评论(0编辑  收藏  举报

导航