javascipt es6迭代器懒惰评估在内存中是如何操作的?

javascipt es6迭代器懒惰评估内存操作流程

说到JavaScript ES6的迭代器对象和next()的调用,可以说是以延迟评估的形式进行操作。

如果迭代器对象是作为生成函数返回的,那么该函数不会立即执行。必须执行返回的迭代器对象的下一个()函数才能执行.这时,如果执行代码评价式在调用栈中上升并满足yield,那么它是否会从调用栈中消失?

function* loop(num) {

    while(true) {
    yield num + 1;
  }

}

loopIterator = loop(1); // return iterator obj
console.log(loopIterator.next()); // call
console.log(loopIterator.next()); // call

解决方案:

不清楚你说的 “上调用栈 “是什么意思。

next() 将生成函数中的代码放在调用堆栈上,并跳转到它离开的地方。这样就会正常执行,正常使用调用栈评估生成函数内部的函数调用。在某些时候,执行过程中遇到了一个 yield 关键字,它必然在生成函数代码的堆栈框架中。然后,它存储状态,从调用栈中删除生成器函数代码,然后从 next() 呼叫。

给TA打赏
共{{data.count}}人
人已打赏
未分类

反应注册

2022-9-9 5:52:17

未分类

在Rust中,如何将借入的值保留到struct的文件中?

2022-9-9 5:52:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索