正常的for循环就不提了,直接进入正题。如下:
//示例1
for(var i=0,a;a=["jack","tom","lily","andy"][i++];){
console.log(a);
}
//示例2
var ary = ["jack","tom","lily","andy"];
for(var i=0,a;a=ary[i++];){
console.log(a);
}
从firebug控制台能看到依次输出jack
,tom
,lily
,andy。这里有个疑问,示例1不知是否会每次都产生一个数组对象实例,如果是,数组很大时可能会有性能问题?
这个技巧关键是这句
a = ary[i++];
js中数组实际上也是一个普通的Object。属于索引数组且并非“连续分配”内存的,因此索引方法并不会带来很高的效率。
见http://snandy.iteye.com/blog/276054
中括号[i++]依然是一个普通对象取属性操作而已,试试看
var ary = ["jack","tom","lily","andy"];
for(var a in ary) {
console.log(a);
}
firebug控制台输出0,1,2,3。证明了0,1,2,3的确是数组ary的属性。
既然是ary的属性,那么是否可以通过点运算符(.)来存取呢?试试看
for(var j=0;j<ary.length;j++) {
console.log(ary.j);//undefined
}
为什么示例1,2中用中括号[]存取就可以了呢?因为中括号ary[0],ary[1],ary[2],ary[3]里的0,1,2,3是字符串类型的。如下:
for(var atr in ary) {
console.log(atr + ":" + typeof atr);
}
输出如下:
0:string
1:string
2:string
3:string
鲜为人知的便是:用中括号[]存取时,js引擎内部隐式的将数字转成了字符串。
分享到:
相关推荐
1、首次为变量赋值时务必使用var关键字 2、使用===取代== 3、underfined、null、0、false、NaN、空字符串的逻辑结果均为false
RocketMQ 奇技淫巧之 ServiceLoader 源码解读 抓下来打包成了HTML文件, 方便离线观看
JavaScript是一个绝冠全球的编程语言,可用于Web开发、移动应用开发(PhoneGap、Appcelerator)、服务器端开发(Node.js和Wakanda)等等。JavaScript还是很多新手踏入编程世界的第一个语言。既可以用来显示浏览器中...
Python 语言有什么奇技淫巧吗?.docxPython 语言有什么奇技淫巧吗?.docxPython 语言有什么奇技淫巧吗?.docxPython 语言有什么奇技淫巧吗?.docxPython 语言有什么奇技淫巧吗?.docxPython 语言有什么奇技淫巧吗?....
《Python那些事——python的奇技淫巧!》python2.7版本
算法心得-高效算法的奥秘(原书第2版)_带书签_高清_[位运算的奇技淫巧].pdf.
EVAL长度限制突破技巧 命令长度限制突破技巧 Mysql突破换行符的技巧 命令执行WAF绕过技巧 无字母数字Webshell构造技巧
bash奇技淫巧,长见识
DNS服务作为网络的一种基础架构,在网络中有举足轻重的地位。它担负着整个网络用户计算机的名称解析工作。没有正确的名称解析,服务器就无法识别各客户机。我们日常进行的浏览网页等上网活动,无一例外都在使用DNS...
收集到的一些src挖掘奇技淫巧
主要介绍了CSS中边框使用负边距值的奇技淫巧,文中介绍了使用负边距进行布局以及实现重叠等效果的方法,非常之巧妙,需要的朋友可以参考下
主要介绍了ASP.NET Core 奇技淫巧之接口代理转发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 试一下就知道这段代码的意思就是声明一个函数,然后立刻执行,因为Javascript中的变量作用域是基于函数的,所以这样可以避免变量污染,但这里的位运算符“~”乍一看...
移动端Ui自动化上的一些“奇技淫巧”;工作上总结的一些好用的东西在这里分享给大家 : )
Git是一个 “分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过 “回撤” 这个 功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。...
主要介绍了大幅优化MySQL查询性能的方法,作者根据实际运行时间比对分析了InnoDB等几个重要的MySQL性能优化点,极力推荐!需要的朋友可以参考下
一直以来,使用纯 CSS 实现波浪效果都是十分困难的。 因为实现波浪的曲线需要借助贝塞尔曲线。 而使用纯 CSS 的方式,实现贝塞尔曲线,额,暂时是没有很好的方法。 当然,借助其他力量(SVG、CANVAS),是可以很...