Javascript 为什么大多数游戏/图形js代码使用var而不是更现代的语法?

Javascript 为什么大多数游戏/图形js代码使用var而不是更现代的语法?,javascript,ecmascript-6,three.js,ecmascript-5,babylonjs,Javascript,Ecmascript 6,Three.js,Ecmascript 5,Babylonjs,我已经做了几年js开发人员了。我最近进入了图形/webgl编程和游戏引擎等领域。无论我去哪里看,大多数代码都避免使用较新的语法,例如()=>{},let,const等。几乎只使用var,functioncallbacks等。在我看到的许多支持回调的示例中,甚至连承诺都没有 引用的示例,如所有的three.js文档、babylon.js文档、stack.gl示例、pixi.js、phaser和大多数游戏代码似乎都使用了这种旧式代码。现在,诚然,这些框架中的一些已经非常成熟了,但是由于新的语法已经变

我已经做了几年js开发人员了。我最近进入了图形/webgl编程和游戏引擎等领域。无论我去哪里看,大多数代码都避免使用较新的语法,例如
()=>{}
let
const
等。几乎只使用
var
function
callbacks等。在我看到的许多支持回调的示例中,甚至连承诺都没有

引用的示例,如所有的three.js文档、babylon.js文档、stack.gl示例、pixi.js、phaser和大多数游戏代码似乎都使用了这种旧式代码。现在,诚然,这些框架中的一些已经非常成熟了,但是由于新的语法已经变得更加普遍,所以已经添加了一些示例和特性

这有什么特别的原因吗?我可以想到几个潜在的原因(尽管无法确认):

  • 浏览器中是否对var进行了更深入的优化?(考虑到
    const
    在用法和生命周期方面具有一定程度的语义,我对此表示怀疑),并且箭头函数没有
    这种
    上下文。诚然,并不是每个人都可以使用更新的语言特性,但对于代码可读性来说,这些特性会带来好处,不是吗
  • 在优化方面,使用较新的语法和转换到较旧的样式会受到影响吗?我是基于这样一个假设,即你对最终输出的控制力没有那么大。然而,我会假设大多数透明引擎,如巴贝尔等,都是在考虑到这一点的情况下构建的?然而,在一般情况下,是否值得避免图形/游戏代码尽可能多的透明化

我认为这些框架中的大多数都比ES6旧(或者至少,本地ES6支持正在广泛传播),所以他们从“旧”开始,然后是正常的方式,没有找到更新的好理由-永远不要更改正在运行的系统。我不确定这个问题是100%可以回答的,除非来自Khronos的行业巨头,工具包作者,而主要的浏览器提供商也愿意与他人合作,共同给出答案。尽管如此,我绝对相信这是因为传统的支持。例如,IE11可以运行WebGL,但不支持ES6,即使在今天仍然被大量使用。我肯定还有其他浏览器和Web视图处于类似状态。@支持旧浏览器的JIM01肯定是原因之一。然而,公平地说,OP确实会问,如果是这样的话,为什么他们不直接向下传输。@23k OP通过提到Babylon.js回答了他们自己的问题。Babylon.js不是用JavaScript编写的,它是用TypeScript编写的,而且非常简单。如果他们有这样的倾向,可以取消回购协议,将目标改为es6。关于示例,如果我正在编写一个示例,我希望它能够在尽可能多的支持平台上运行。这都是个人喜好,es6示例也可以(旧浏览器除外)。