听说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 },我们需要
检查指标边界,而每个直接反馈的迭代变量从底层根据内链列表,从而节省了跨境检验过程。