之前听说火狐的JS引擎支持for each in的语法,例如下述的代码:
复制代码 代码如下:
var arr = [10,20,30,40,50];
for each(var k in arr)
console.log(k);
即可直接遍历出arr数组的内容。
由于只有FireFox才支持,所以几乎所有的JS代码都不用这一特征。
不过在ActionScript里天生就支持for each的语法,不论Array还是Vector,还是Dictionary,只要是可枚举的对象都可以for in和for each in。
之前并没有感觉有太大的差异,为了懒得敲一个each单词,一直用熟悉的for in来遍历。
不过今天仔细琢磨了会,从数据结构的角度分析了下,觉得for in和for each in效率上有着本质的区别,无论是JS还是AS。
原因很简单:Array不是真正意义上的数组!
何为真正意义的数组?当然就是传统语言里type[]定义的数据类型,所有元素都是连续保存的。
“Array”虽然也是数组的意思,但熟悉JS的都知道,它其实是个非线性的伪数组,下标可以是任意数字。写入arr[1000000]并非真正申请容纳一百万个元素的空间,而是把1000000转换成相应的哈希值,对应到很小一块储存空间里,从而节省了大量内存。
例如有如下数组:
复制代码 代码如下:
var arr = [];
arr[10] = 1000;
arr[20] = 2000;
arr[30] = 5000;
arr[40] = 8000;
arr[200] = 9000;
用for...in遍历Array,是个很累赘的过程:
遍历时每次访问arr[k],都要进行一次Hash(k)计算,根据散列表的容量取模,最终在冲突链表里找到结果。
如果支持for each...in的语法,其内部的数据结构就决定了会快很多:
Array里储存存了keys的列表,也把每个values值作为链表关联起来。每当有值添加或删除,就更新其链接关系。
当for each...in遍历时,只需从第一个节点往后迭代即可,无需任何Hash计算。
当然,对于AS3里Vector这样的线性数组来说,两者相差不大;同理,HTML5里支持二进制的数组ArrayBuffer也是如此。不过从理论上来看,即使arr是个连续的线性数组,for each in还是要快一点:
for...in遍历时,每次访问arr[k]都要进行下标越界检查;而for each in则根据内部链表,直接从底层反馈出迭代变量,节省了越界检查的过程。
相关推荐:
智能AI写作生成:如何借助人工智能提升创作效率与质量
SEO优化排名原理解析:如何提高网站排名,实现精准流量获取,奥迪ai售价
seo需要学习什么语言,做seo需要懂什么技术 ,ai软件制作教程
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
SEO难吗?揭秘SEO背后的真相,让你轻松上手!,大旺百度网站推广
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
AI撰写工具的无限可能,让内容创作更高效、更精彩!
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
二次创作的魅力与潜力:创意无限的数字时代,天长外贸网站建设
Bing无法使用怎么办?解决方法及替代方案推荐!,ai文字设计教程
重生成AI:突破科技前沿,开启智能未来
SEO未来:如何在变革中抢占先机,迎接数字营销的新纪元,台州网站建设分析和总结
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
从“官网扒下来”看企业数字化转型的未来,摄影营销策略推广文案
企业如何借助SEO咨询实现精准流量引爆,助力业绩提升,立刻推广的旅游线下营销
优化投入,让企业更具竞争力,怎样推广营销方案
ChapGPT免费爬墙,轻松访问全球互联网资源!,蜜桃ai插画
SEO确实是企业增长的关键,这些技巧让你走在行业前沿,山东网站建设信息
seo软文用什么论坛,seo软文是什么意思 ,爱字幕的AI变脸不见了
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
怎么用AI写文章:高效创作的秘诀
ChatGPT昨晚突然不能使用,背后真相令人意想不到!,edga ai
SEO联系:如何通过SEO优化提升您的网络营销效果,企业营销推广获客
好用的AI写作软件免费推荐:创作新境界!
AI免费工具:提升效率与创意的秘密武器
OpenAI新产品与现有技术的完美结合:赋能未来的智能变革,培训 ai
AI热门软件,未来科技的钥匙
seo读什么书,seo是哪个专业的 ,亚洲9ai吧
AI生成文章免费工具,让创作变得轻松又高效,ai安心健
SEO售产-数字营销新战场,助力企业实现盈利增长,去哪找自贡网站建设
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
seo规范是什么,seo行业标准 ,啊龙ai音乐
seo资源指的是什么,seo资料 ,绿眼AI
ChatGPT支持多种语言输入输出,让全球资讯触手可及,联想拯救者的ai写作
ChatGPT空白对话:释放创意,开启智能对话的新世界,ai重庆南坪
SEO笔记:如何打造高效的SEO策略提升网站排名,网站优化优质服务方案
用AI写的文章算原创吗?真相揭示,带你深度思考!
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
ChatGPT桌面应用安装了,不能用?解决方案全攻略,让你轻松畅享AI助手!,绫波丽ai智能
打造高效创作体验,写文章AI软件重塑内容生产力
ChatGPT怎么打开不了?全方位解决方案!,大庆ai
seo项目是什么,seo是啥 ,ai ued
SEM做得好可以取代SEO吗?浅析两者的异同与未来趋势,王道ai
SEM+SEO:助力企业数字化营销的双剑合璧之道,ai头像丑
AI免费免登录:轻松体验人工智能的魔力,无需繁琐注册,华为AI音箱2音质如何
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
SEO优化全攻略提升网站排名的关键步骤与未来趋势,这是什么新晋动画ai