Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript可选类型暗示_Javascript_Performance_Variables_Ecmascript Harmony_Ecmascript 4 - Fatal编程技术网

Javascript可选类型暗示

Javascript可选类型暗示,javascript,performance,variables,ecmascript-harmony,ecmascript-4,Javascript,Performance,Variables,Ecmascript Harmony,Ecmascript 4,当一种编程语言是静态类型时,编译器可以更精确地分配内存,因此通常性能更高(在所有其他条件相同的情况下) 我相信ES4引入了可选类型暗示(据我所知,由于actionscript,Adobe在其规范中发挥了巨大作用)。因此javascript正式支持类型暗示吗?ES6是否支持本机变量的可选类型暗示 如果Javascript确实支持类型暗示,那么是否有任何基准可以显示它在性能方面的回报?我还没有看到一个开源项目使用这个功能。我从各种网站上的许多Javascript演讲中了解到,类型暗示不会像人们认为的

当一种编程语言是静态类型时,编译器可以更精确地分配内存,因此通常性能更高(在所有其他条件相同的情况下)


我相信ES4引入了可选类型暗示(据我所知,由于actionscript,Adobe在其规范中发挥了巨大作用)。因此javascript正式支持类型暗示吗?ES6是否支持本机变量的可选类型暗示


如果Javascript确实支持类型暗示,那么是否有任何基准可以显示它在性能方面的回报?我还没有看到一个开源项目使用这个功能。

我从各种网站上的许多Javascript演讲中了解到,类型暗示不会像人们认为的那样有多大帮助

简言之,如果愿意,大多数Javascript对象往往具有相同的“形状”。也就是说,它们将以相同的顺序创建相同的属性。这种“形状”可以被认为是对象的“类型”。 例如:

function Point(x, y) {
  this.x = x;
  this.y = y;
}
从“点”生成的所有对象都将具有相同的“形状”,而较新的内部Javascript引擎可以执行一些奇特的游戏以获得更快的查找

在Chrome(可能是其他浏览器)中,它们使用高位标志来指示数字的其余部分是整数还是指针

随着所有这些花哨的事情的进行,这只剩下人类编码人员的打字了。一、 首先,我真的不必担心类型,也不会使用那个特性

不过,你是半对的。类型提示是
ActionScript 3
的一部分,它是
ECMAScript
的派生版本,但提示从未被纳入标准。好吧,除了一厢情愿之外,这件事还没有被讨论过

这段视频更详细地描述了事情:
Javascript是基于原型的,因此对象的“类型”是完全动态的,并且能够在其生命周期内进行更改


看看Ben Firshman关于对象类型方面Javascript性能的研究结果——

Javascript JIT编译器必须做一些非常花哨的事情来确定表达式和变量的类型,因为类型对许多优化都至关重要。但是JavaScript编译器的作者在过去的五年里做了所有这些工作。编译器现在真的很聪明。因此,可选的静态类型不会提高典型程序的速度

令人惊讶的是,ActionScript中的类型注释有时会在值从非类型化代码传递到类型化代码时要求进行类型检查(或隐式转换),从而降低编译代码的速度


在编程语言中使用静态类型可能还有其他原因,但是ECMAScript标准委员会对将它们添加到JS中没有兴趣。

我迟到了,但是由于没有人真正回答您有关标准的问题,我就跳进去

是的,类型暗示是ECMAScript 4的一部分,看起来它将成为JavaScript的未来。。。直到ES4破釜沉舟。ECMAScript 4被放弃,从未最终确定。ECMAScript 5(当前的标准)没有包含为ECMAScript 4计划的许多内容(包括类型暗示),实际上只是ECMAScript 3.1草案的一个快速增强版本——在ES4过早消亡后,提供一些有用的特性

正如您所提到的,现在他们正在大量生产ECMAScript 6(它有一些非常棒的特性!),但不要期望看到类型提示。Adobe的人在某种程度上已经与ECMAScript委员会分道扬镳,而ES委员会似乎对把它带回来不感兴趣(我认为这是有充分理由的)

如果这是你想要的东西,你可能想退房。这是一个全新的微软项目,基本上是对ES6+类型的尝试。它是JavaScript的超集(除了包含类型外几乎完全相同),并且可以编译为可运行的JavaScript。

ES7(不久将推出)有一个新功能,名为“可能就是您所要求的”。 现在的语法有点类似于ES4和TypeScript。 全部使用
并将类型附加到变量。
但是它不能确认语法。

“我相信ES4引入了可选类型暗示”=>你对此有引用吗?我不确定这是否算数,但这里是规范:你可以通过搜索pdf中的“可选”来找到类型下的信息哦。。。ES4-又名“不是标准”。在没有进入政治的情况下,考虑ES4“一厢情愿的想法”。你正在谈论的是TraceMon,V8和ILK吗?有趣的是:JaydFrash——我连续看了五个小时的JS相关视频,一些细节变得模糊了。我知道我给出的具体例子来自于
V8
,但是有评论是这样的:“Firefox团队也做了类似的事情。”在一个纪录片中链接到了我的答案。嗯,似乎是这样,现在是至高无上的。有趣的文章。此外,运行C++或Chrome中的任何内容都发生了什么?这仍然可能吗?微软在不使用类型暗示来使Typescript长寿方面发挥了重要作用吗?@DUKE你能稍微澄清一下你的问题吗?有一些像asm.js这样的项目,通过使用类型强制来设法接近JavaScript的本机性能(或者他们说是这样的)。类型提示对此有很大帮助,至少在理论上是这样。ecmascript.org已关闭。林克现在死了