解构赋值 为什么: 更方便的对一组变量赋值 从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});