听说Firefox的js引擎支持每个代码的语法,如下面的代码:

复制代码代码如下所示:
var arr = { 10,20,30,40,50 };
每个(VaR K改编)
console.log(K);

对ARR数组的内容可以直接穿越。

由于只支持Firefox,几乎所有js代码都不使用此特性。

然而,在Actionscript,每个语法自然是支持的,无论是数组或向量或字典,只要枚举对象可以在和每个。

以前没有什么区别,为了麻烦敲一个字,它总是跟着熟悉的东西进来。

但是今天我仔细考虑了一下。从数据结构的角度来看,我认为js和。

原因很简单:数组不是真正意义上的数组!

什么是真正意义上的数组当然,它是由传统语言中的类型{定义的数据类型,并且所有元素都是连续保存的。

数组是数组,但熟悉JS知道它是一个非线性伪数组和下标可以是任何数。写作ARR { 1000000 }没有申请空间存储了一百万个元素,而是将1000000对应的哈希值,这相当于一个很小的存储空间,节省了很多记忆。
例如,有以下数组:

复制代码代码如下所示:
var arr = { };
ARR { 10 } = 1000;
ARR { 20 } = 2000;
ARR { 30 } = 5000;
ARR { 40 } = 8000;
ARR { 200 } = 9000;


用数组遍历数组的过程…这是一个非常繁琐的过程:





每一次的ARR {K }被遍历,哈希(K)进行了计算,基于哈希表的容量,如果有冲突,最终的结果将是价值发现。

如果每个语法…在支持的内部数据结构会快得多:





在数组中,每个值直接用作节点并由链表维护。每当添加或删除一个值时,链接关系都会更新。
每次都是…在遍历中,只需要从第一个节点迭代,不需要任何散列计算。

当然,对于线性阵列如矢量在AS3中,它们之间没有差异;在相同的方式,相同的是,支持二进制在HTML5阵ArrayBuffer真的。但在理论上,即使是是一个连续的线性阵列,每个在快一点:

当…在遍历,每次我们访问ARR {K },我们需要检查指标边界,而每个直接反馈的迭代变量从底层根据内链列表,从而节省了跨境检验过程。