es6之变量的解构赋值

68 阅读1分钟

1. 数组的解构

let [a,b,c] = [1,2,3]
  1. 默认值
let [a=3] = [4]
  1. e6内部使用严格相等运算符(===)来判断一个位置是否有值,所以当一个数组成员严格相等于undefined,默认值才会生效。
let [a = 3] = [undefined]
a //3
let [a = 5] = [null]
a // null

2.对象的解构

const obj = { name: 'xiaoming', age: 444 }
const { name, age } = obj;
name // 'xiaoming
age // 444
  1. 变量名与属性名不一致
const obj = { name: 'xiaoxiao' }
const { name: newName } = obj
newName // 'xiaoxiao
  1. 支持嵌套
const obj = { student: { name: 'xiaoming', age: 27}}
const { student: { name, age }} = obj
name // 'xiaoming
age // 27
  1. 支持默认值
const obj = { name: 'xiaoming', age: 444 }
const { sex = 'man' } = obj;
sex //man

3.字符串解构

const [a, b, c] = 'hel'
a // h
b // e
c // l

4.函数参数的解构

function add([x,y]) {
  return x + y;
}
add([1,2]) //3
  1. 默认值
function add({ x = 1, y = 2 }) {
  return x + y
}
add({}) //3

function add({ x, y } = { x: 0, y: 1}) {
  return x + y
}
add({}) // NaN
注意以上两者的区别,一个是给参数中的变量赋予了默认值,一个是给函数的参数赋予了默认值,两者是不一样的