bad*_*unk 7 javascript variables performance ecmascript-4 ecmascript-harmony
当编程语言是静态类型时,编译器可以更精确地关于内存分配,因此通常更高性能(所有其他条件相同).
我相信ES4引入了可选类型提示(根据我的理解,Adobe因为actionscript而在其规范中做出了巨大贡献).javascript是否正式支持类型提示?ES6是否支持原生变量的可选类型提示?
如果Javascript支持类型提示,是否有任何基准测试表明它在性能方面如何得到回报?我还没有看到一个开源项目使用它.
Jer*_*her 12
通过听取各种网站上的许多Javascript会谈,我的理解是,类型提示不会像人们想象的那样提供帮助.
简而言之,如果您愿意,大多数Javascript对象往往具有相同的"形状".也就是说,它们将具有以相同顺序创建的相同属性.这种"形状"可以被认为是对象的"类型".一个例子:
function Point(x, y) {
this.x = x;
this.y = y;
}
Run Code Online (Sandbox Code Playgroud)
所有由"Point"制作的对象都具有相同的"形状",较新的内部Javascript引擎可以做一些花哨的游戏以获得更快的查找速度.
在Chrome(可能是其他人)中,他们使用高位标志来指示数字的其余部分是整数还是指针.
随着所有这些奇特的事情继续下去,这只是为人类编码器打字.拿我来说,真的就像不必担心类型和不会使用该功能.
不过,你是半正确的.类型提示是其中一部分的ActionScript 3衍生物ECMAScript- 但提示从未使其成为标准.AFAIK,在一厢情愿的想法之外,尚未进行过讨论.
此视频详细介绍了相关内容:http: //www.youtube.com/watch?v = .FrufJFBSoQY
我迟到了,但由于没有人真正回答你关于标准的问题,我会跳进去.
是的,类型提示作为ECMAScript 4的一部分进行了讨论,它看起来似乎将成为JavaScript的未来......直到ES4黯然失色.ECMAScript 4被遗弃,从未最终确定.ECMAScript 5(当前标准)没有包含许多为ECMAScript 4计划的内容(包括类型提示),并且实际上只是ECMAScript 3.1草案的一个快速增强的版本 - 以获得一些有用的功能在ES4不合时宜的消亡之后.
正如你所提到的,现在他们正在努力制作ECMAScript 6(它有一些非常棒的功能!),但不要指望看到类型提示.Adobe人员在某种程度上与ECMAScript委员会分道扬and,ES委员会似乎没有兴趣将其归还(我认为有充分理由).
如果它是您想要的,您可能想要查看TypeScript.这是一个全新的Microsoft项目,基本上是尝试成为ES6 +类型.它是JavaScript的超集(除了包含类型几乎相同),它编译为可运行的JavaScript.
JavaScript JIT 编译器必须做一些非常奇特的事情来确定表达式和变量的类型,因为类型对许多优化至关重要。但是 JavaScript 编译器的编写者在过去五年中一直在做所有这些工作。编译器现在真的很聪明。因此,可选的静态类型不会提高典型程序的速度。
令人惊讶的是,当值从无类型代码传递到有类型代码时,ActionScript 中的类型注释有时会因需要类型检查(或隐式转换)而使编译代码变慢。
可能还有其他原因需要编程语言中的静态类型,但 ECMAScript 标准委员会没有兴趣将它们添加到 JS。
| 归档时间: |
|
| 查看次数: |
13111 次 |
| 最近记录: |