在其他语言的编译器领域中,当编译为从循环中拉出时,类似这样的东西会被优化,这样就不会每次都创建一个新对象:
const arr = [1, 2, 3, 4, 5]
arr.map(num => {
const one_time = 5; // this never changes, can be lifted out of the loop.
return num * one_time;
})
我试图查看打字稿编译器是否更改了上面的代码,但似乎没有 - 也许有其他东西可以处理它?或者,对象创建可能会分配该变量并且永远不会更改它。
我不希望 ES2015 这样做,因为它是解释的,但我很高兴我错了。
如果有人能告诉我将来如何最好地解决这个问题,那就加分了。
多谢你们!
不,TypeScript 编译器不进行任何优化。这是它的非目标之一:
非目标
- 积极优化程序的运行时性能。相反,发出惯用的 JavaScript 代码,可以很好地适应运行时平台的性能特征。
Source: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
至于ES2015,那是一个语言规范。 JS 引擎会编译和优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)