You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中ES6迭代器未赋值的next()返回值是如何存储的?

问题解答

你提供的示例代码如下:

let numbers = [100,200,300];

let iter = numbers[Symbol.iterator]();

iter.next(); // statement 1
iter.next(); // statement 2
console.log(iter.next()); // statement 3

针对你提出的问题,statement 1、statement 2中iter.next()返回的未被赋值的结果,JavaScript 并不会对其进行长期存储,这类未被引用的临时值会在表达式执行完成后直接被丢弃:

  • 所有JS表达式执行后都会生成返回值,如果你没有把这个返回值赋值给变量、没有传入函数作为参数、也没有参与其他运算,它就会被标记为无引用的临时对象,马上会被垃圾回收机制清理,不会占用额外的持久内存。
  • 数组迭代器内部仅会维护当前的遍历下标索引,不会存储历史next()调用的返回结果,每次调用next()时只会根据当前下标生成对应{value: 遍历值, done: 遍历是否完成}格式的临时对象,没有被引用的临时对象不会被保留。

你给出的代码最终会打印{value: 300, done: false},也能验证迭代器仅记录遍历进度,不会留存之前的返回值。


内容的提问来源于stack exchange,提问作者Akhlesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:54:03