es6结构 {}和[]有啥区别

es6结构 {}和[]有啥区别

      const { a, b } = res
      const [a, b] = res
阅读 2.5k
3 个回答

对象解构,以key键名

let { a, b } = {a:'555',b:'666'}
console.log(a);// 555
console.log(b);// 666

数组解构,以下标顺序

let [d, c] = [888,999];
console.log(d);//888
console.log(c);//999

其他剩余 ,“...”需要在最后一个


let [, e,...f] = [888,999,000,1111];
console.log(e);//999
console.log(f);//[0, 1111]

一个是解构对象 一个是解构数组啊 let {a, b} = [1, 2],a,b肯定取不到值啊

简单说对象解构使用{},数组解构使用[]

  • 对象解构是根据key来解构的
  • 数组解构是根据下标来的

如果你使用[]来解构对象需要实现 iterable

let obj = {a: '我是a', b: '我是b'}
let [a, b] = obj; // 报错没有实现iterable

实现 iterable

let obj = {
      a: '我是a', 
      b: '我是b',
      [Symbol.iterator]() {
        let index = 0;
        let that = this;
        return {
          next() {
            if(index < Object.keys(that).length) {
              return {value: that[Object.keys(that)[index++]], done: false}
            } else {
              return {value: undefined, done: true}
            }
          }
        }
      }
}
let [a, b] = obj;
console.log(a); // '我是a'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏