当前位置:首页 > 日记 > 正文

向我学习Javascript的for循环和for循环…在周期

向我学习Javascript的for循环和for循环…在周期
我们都知道在Javascript中提供迭代对象有两种方式:

对于周期;
在循环中;

一、循环

不足:

在每个周期中,将得到数组的长度。

终止条件应明确;

在for循环中,你可以遍历数组或对象的对象如参数和htmlcollection对象数组。流通的常用形式如下:
第二次最佳循环
对于(var i = 0;i < myarray.length;i++){
什么 / / MyArray {我}
}

这种循环的缺点是,数组的长度是获得每一次的周期循环。这个时候减少你的代码的性能,尤其是当MyArray不是数组,而是一个htmlcollection对象。

htmlcollections是指物体通过DOM方法返回,例如:

document.getelementsbyname()

document.getelementsbyclassname()

document.getelementsbytagname()

还有一些其他的htmlcollections,其中介绍了在DOM标准仍在使用。是uff1a

在document.images所有图片元素:页面

document.links:所有的标签元素

document.forms:所有形式

文档:表单{ 0 }:元素:页面上第一个表单中的所有字段

收集的麻烦在于它们实时地查询基本文档(HTML页面),这意味着每次访问任何集合的长度时,都希望实时查询DOM,而DOM操作通常是昂贵的。

这就是为什么当您获得循环的值时,缓存数组(或集合)的长度是一个更好的形式,如下代码所示:
对于(var i = 0,最大值为myarray.length;我<最大;i++){
什么 / / MyArray {我}
}

这样,您只在这个周期中检索其中一个长度值。

在所有浏览器的缓存htmlcollections长度是更快,2次(safari3)到190倍(IE7)当内容流通。这似乎是很老的 /数据

注意,当您显式希望修改循环中的集合(例如,添加更多DOM元素)时,您可能喜欢长度更新而不是常量。

使用单个var表单,可以将变量从循环中取出,如下所示:
函数活套(){
var I=0,
最大值,
MyArray = { };

为(i = 0,最大值为myarray.length;我<最大;i++){
什么 / / MyArray {我}
}
}
这种形式具有一致性的优势,因为你坚持一个单一的变量形式。缺点是当代码被重建,它是复制和粘贴整个环路的一点点困难。例如,如果你复制一个周期从一个功能到另一个,你必须确保你能介绍我马克斯为新的功能(如果你不在这里,使用它们你可能删除它们从原来的功能)。

最后一个需要对循环进行调整的是用以下表达式之一替换。
i = i + 1
我= 1
JSLint提示您这样做,原因是升职+ +和困难(过分棘手)。如果你忽略它直接对JSLint的正正选择将假(默认是默认的)。

两种形式的变化:

少一个变量(没有max)
倒数0,通常更快,因为比较数组长度或其他不是0的长度比0更有效率。
第一个变化的形式 :

var i,MyArray = { };
对(我= myarray.length;我--;){
什么 / / MyArray {我}
}

第二个while循环:

VaR MyArray = { },
我= myarray.length;
当(i -){
什么 / / MyArray {我}
}

这些小的改进只是在性能和使用JSLint抱怨我—。

二,为…的循环-也被称为枚举

for…for循环通常用于迭代对象的属性或数组的每个元素,for…for循环中的循环计数器是一个字符串,而不是一个数字。它包含当前属性的名称或当前数组元素的索引。

当一个对象被遍历时,变量i是循环计数器作为对象的属性名:
在通过对象属性的循环中使用..
varperson = {
名称:admin
年龄:21岁,
地址:山东
};
对于(var本人){
console.log(我);
}

执行的结果如下:

名称
年龄
地址

当遍历数组时,变量i是循环计数器的索引,作为当前数组元素。
在循环中使用..遍历数组。
vararray = { 管理
对于(数组中的变量){
console.log(我);
}

实施结果:







但现在看来…在循环中非常好,但不要太高兴地看下面的例子:
数组
将一个name属性添加到数组原型中
阵列。原型。名称=zhangsan;
对于(var在数组中){
警报(数组{ });
}
运行结果:

行政
经理

DB

zhangsan

嘿,奇迹,多出来的一张三平白无故

现在,使用for循环会是什么样子呢
vararray = { 管理
将一个name属性添加到数组原型中
array.prototype.name =zhangsan;
对于(var i = 0;i < array.length;i++){
警报(数组{ });
};

运行结果:

行政

经理

DB

哦,现在我明白了..在循环遍历的方法和属性的一个原型,这可能会导致代码中的错误。为了避免这个问题,我们可以使用对象的hasownproperty()来避免这个问题的方法。如果对象的属性或方法不能继承,那么hasownproperty()方法返回true。这里的检验不涉及其他对象继承的属性和方法,只检查在特定的对象本身的属性直接创造的。
vararray = { 管理
阵列。原型。名称=嶂山;
对于(var在数组中){
如果不是直接创建的对象本身属性(即,属在原型 /属性)中,则跳过显示。
如果(array.hasownproperty(I)){
警报(数组{ });
}
}
运行结果:

行政
经理
DB

使用hasownproperty其他方式()是在object.prototype.like这uff1a取消方法
对象
var
手:2,
腿:2,
头:1
};
为(var在man){
如果(Object.prototype.hasOwnProperty.call(人、我)){ / /过滤器
console.log(我,:
}
}
其优点是避免命名冲突,当男人对象重新定义hasownproperty。这也避免了所有长属性查找对象的方法,你可以使用一个局部变量缓存。
我有自己的object.prototype.hasownproperty VaR,=;
为(我在人){
如果(hasown.call(人、我)){ / /过滤器
console.log(我,:
}
}
严格地说,不使用hasownproperty()是不是一个错误。根据任务和信心你对代码的程度,你可以跳过它提高一点速度环。但是当你不确定当前对象的内容(其原型链),加入hasownproperty()更安全。

格式化的变化(通过JSLint)会直接忽略括号把如果在同一行语句,优点是循环语句读起来像是一个完整的想法(每个元素都有自己的属性,X,和怎么做X):
警告: / /通过JSLint试验
我有自己的object.prototype.hasownproperty VaR,=;
(我为人)如果(hasown.call(人、我)){ / /过滤器
console.log(我,:
}
以上是Javascript提供的两种迭代对象的介绍:for循环和for…在环。我希望这篇文章能帮助你学习。

相关文章

PowerPoint如何制作个性化日历PPT

PowerPoint如何制作个性化日历PPT

制作教程,日历,电脑软件,PowerPoint,PPT,PowerPoint有强大的控制功能,很好用,可以做很多优秀的作品。今天,我们介绍日历的制作,设置ActiveX控件属性,让它个性化一些!下面跟着小。 首先,单击菜单栏-视图-工具栏-控件工具箱。 单击控件工具栏中的右…

如何取消QQ每天的QQ选择技巧

如何取消QQ每天的QQ选择技巧

选择,取消,技巧,电脑软件,QQ,如何取消QQ每天的选择 QQ软件默认是自动打开和登陆QQ。每天将有选择的弹出窗口的每一天。只要我们设置简单,我们就可以取消QQ每天选择的弹出广告,设置如下所示的细节: 1。首先登录QQ,但是你会在QQ面板底部找到设置…

如何自定义ps快捷键设置ps快捷键的

如何自定义ps快捷键设置ps快捷键的

快捷键,自定义,设置,方法,电脑软件,Adobe PS图象处理软件{ 1 },简称PS,是一个图像处理软件的开发和分发土坯系统。那么如何自定义PS快捷键设置为大家介绍PS快捷键的方法 PS图象处理软件主要是针对数字图像由像素。其众多的编辑和绘图工具的使…

QQ个性签名伤感签名

QQ个性签名伤感签名

个性签名,伤感,电脑软件,QQ,不要干涉你的生活并不意味着你不在乎,Rdquo,为你的QQ选择一个多愁善感的签名。 1,我说我会忘记,因为心中充满悲伤。 2、伤心,不是因为爱情的结束,而是因为一切都结束了,爱情还在。 3,想念我,你永远不会遇到像我这样的人对…

2016经典QQ个性签名经典签名

2016经典QQ个性签名经典签名

经典,个性签名,电脑软件,QQ,如果有一天我会成为你的过去,你不会记得。选择一个独特的QQ签名为自己。小编辑在这里给你一些个人签名,希望有你喜欢的东西。 1,我不要虚伪的话语,不要誓言,我要你。 2,对于任何人,同样信任少数人。 三.放弃和放弃真的…

遇见这么好,生活一定要开心QQ空间

遇见这么好,生活一定要开心QQ空间

空间,电脑软件,QQ,遇到这么好,生活一定是幸福的。当一个朋友把这个信息传递给我,七彩阳光的时刻充满了天空,雨像雨,在推特,旋转的风和雨。心若为尘,飘着小雨,升华,长出翅膀,我会飞,Suifengerqu;陌生的行人友好,那么温暖,微笑的脸下幸福花。 无法抑制狂野…

最新搞笑个性签名搞笑个性签名

最新搞笑个性签名搞笑个性签名

个性签名,搞笑,最新,电脑软件,想要与众不同的QQ个性签名打算在QQ签名得到别人的关注显示了地方的性格,让你提供一些小的令人捧腹的搞笑个性签名在这里,供大家参考。 1,我是你的分子,原子,化学反应,进入江孜。 2、女孩只能变成女孩,面对自己最喜欢…

word表扩展使用技巧的专用词汇法

word表扩展使用技巧的专用词汇法

扩展,专用,使用技巧,词汇,电脑软件,我们正在建设一个跨页单词表,在传播过程中遇到的一些问题,我们需要处理的一些细节,否则会影响整体布局的影响,很多人觉得麻烦,通常由人工分页,在两页重新建立的形式,但更多的是可行的和有效的方法。参照以下具体…

excel打印线excel基础的排除方法

excel打印线excel基础的排除方法

方法,基础,电脑软件,excel,当我们用excel打印表单时,总会有一些虚线。我们怎样才能摆脱它呢这里有一点excel的技术来删除打印行。我希望你能从中得到一些结果。 excel删除打印行: 打印Excel工作表后,会留下几行虚线,如下图所示: 许多学生认为…

excel快速计算年龄法excel基础

excel快速计算年龄法excel基础

计算,年龄,快速,基础,电脑软件,众所周知,身份证号码是由国家汇编的。人们的出生年份也在这些数字中。只要知道了身份证号码,就可以很快计算出相应的出生年龄,并用excel软件对其进行简单的批量计算。下面的小汇编excel带有身份证快速计算年龄的…

js操作表元素实现表列的添加和删除

js操作表元素实现表列的添加和删除

操作表,删除,元素,电脑软件,js,本文介绍了用JS操作表元素添加和删除表列行列的方法,供大家参考: / ************ tabletool.js *********************************************************************************************************…

简介:介绍AICS5中风调色板的使用

简介:介绍AICS5中风调色板的使用

调色板,简介,电脑软件,本教程介绍朋友AI CS5中风调色板的使用教程,比较基础,适合初学者学习,推荐,喜欢的朋友可以跟着教程学习 本教程介绍朋友AI CS5中风调色板的使用教程,非常好,值得学习,推荐学习起来! 使用新的调色板;脑卒中;可用于指定的线是实…