gpt4 book ai didi

javascript - 为什么生成器不能很好地转换?

转载 作者:行者123 更新时间:2023-11-29 10:32:57 25 4
gpt4 key购买 nike

我们遵循 airbnb eslint 指南,他们在其中说建议不要使用 generators

  • 11.2 Don't use generators for now.

    Why? They don't transpile well to ES5.

我似乎无法找到任何解释来说明它们没有很好地转译是什么意思(不仅在本文档中,而且在 Google 上)。我们正在使用 babel,并且有 polyfills 可以做到这一点。有什么我想念的吗?

最佳答案

他们完全错了(或者文档已经严重过时了)。转译器从生成器和异步函数创建一个基于闭包的状态机。他们不是很好,但工作很快。唯一的缺点是它更难调试(即使使用 sourcemaps)。

另一方面,在某些情况下,不使用生成器会导致尴尬的解决方法,而生成器会提供干净的解决方案。编写代码时始终首先要清楚。

编辑

我们开发人员在现实生活中了解到,一些编程挑战最好用状态机来解决。生成器和异步函数为您提供了一个强大的工具来表达其中的大部分状态机。

这就是语言的演变方式:我们发现一个重复出现的编程问题有一个解决方案,因此人们创建了一种具有新语法的新编程语言,以便为该问题提供更短的解决方案。这就是我们获得基本数据结构、函数、闭包、类、一流函数、GC、RTTI、反射等的方式……今天,您选择在项目中使用哪种语言被认为是一个问题。您可以直接编写机器代码,也可以使用一些高级托管语言。争论通常是关于执行速度(汇编应该更快,对吗?)、可移植性和所用语言语法的学习曲线(我为什么要学习 lambdas 和 yield 以及 async/await什么时候我总是能够在不使用任何这些的情况下解决任何问题?)。我个人更喜欢使用表达性语言,我相信高级/托管程序永远不会比原生程序慢。

因此,让我强调一下不使用生成器会造成什么损失:您最终会编写相同的百行状态机(可能伪装成对象和函数的集合),这些状态机可以使用合理且实用的短程序生成熟悉的语法。

关于javascript - 为什么生成器不能很好地转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com