解构与迭代器

文章介绍了如何在JavaScript中使用let声明变量时避免报错,通过为对象添加Symbol.iterator方法并定义生成器函数,实现对象解构并获取其值。重点讲解了生成器和迭代器的概念及其在数组解构中的实际操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始

let [x, y] = { x: 1, y: 2 };

正常的写法:

      let { x, y } = { x: 1, y: 2 };
      console.log(x, y); //1 2
      let [x, y] = [1, 2];
      console.log(x, y); //1 2

加上iterator方法

如果我们希望这段代码不报错,就需要给它加上iterator方法。

let [x, y] = { x: 1, y: 2 };

这样修改就不会报错了

      let obj = { x: 1, y: 2 };

      obj[Symbol.iterator] = function* () {
        yield this.x;
        yield this.y;
      };

      let [x, y] = obj;
      console.log(x);
      console.log(y);

我们给它添加了一个生成器函数,执行该生成器函数,会返回一个迭代器。

什么是生成器和迭代器

    let generator = function* () {
        yield "1";
        yield "2";
      };

      //执行生成器函数会返回一个迭代器
      let iterator = generator();

      console.log(iterator.next());
      console.log(iterator.next());

数组解构的本质

    let obj = { x: 1, y: 2 };

    obj[Symbol.iterator] = function* () {
      yield this.x;
      yield this.y;
    };


    let iterator = obj[Symbol.iterator]();
    let x = iterator.next().value;
    let y = iterator.next().value;
    console.log(x, y);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值