Javascript在使用for循环时应该注意的问题——问题的摘要
大多数情况下,我们使用for循环,for循环部门常常在一个数组上循环,这是我们多次编写的。
第二次最佳循环
对于(var i = 0;i < myarray.length;i++){
什么 / / MyArray {我}
}
这样的代码没有什么大问题,但是每个周期将得到数组的长度,这将减少你的代码,尤其是当MyArray不是数组,而是一个htmlcollection对象。
再看下面的代码:
对于(var i = 0,最大值为myarray.length;我<最大;i++){
什么 / / MyArray {我}
}
此代码只获取数组的长度,并提高代码的质量。
使用单个var表单,可以将变量从循环中取出,如下所示:
函数活套(){
var I=0,
最大值,
MyArray = { };
…
为(i = 0,最大值为myarray.length;我<最大;i++){
什么 / / MyArray {我}
}
}
javascript用于循环的问题总结
这个问题的讨论最初来自公司的内部邮件,我只是记录了这个问题的讨论。
一些项目团队发现,当使用x(x)数组的方式时,X在IE浏览器中出现了意外值。
具体来说,如果自定义array.prototype.indexof方法(例如,一个原型源污染)可能是因为老版本的IE浏览器不支持array.indexof方法,和开发商要使用,那么浏览器会出现这样的问题:
array.prototype.indexof =函数(){…};
var arr = { 1, 2 };
(X为ARR)console.log(X);
输出
一
二
函数(){…}
换句话说,IndexOf方法输出。
解决的办法很简单,要么不添加此方法或使用一个循环一样(我= 0;i < array.length;i++)等。
但问题的实质是什么呢据推测,这可能是因为使用(X为OBJ)实际上是要遍历一个对象,和阵列的实现也具有共同目标一致,但关键是建立的价值。
{ 0:某事
也正是在一问一答StackOverflow提到,用于当你遍历数组。之间的差异和(;;;)是列举一个对象的属性前,有两个这样的问题:
枚举的序列不能保证;
还继承了继承属性。
支持array.prototype.foreach,同样清楚的是从这张桌子,IE8及以下版本都不支持。
还详细描述了每种方法的兼容性。事实上,主要的Javascript框架(如jQuery、下划线和原型,等)有一个安全的和各功能的实现通用。
在对章JSLint,提到在声明允许遍历对象的属性名也,但它也经历了由原型链继承的属性,这在很多情况下会造成误差超出预期。有一个粗糙的解决方案:
用于(对象中的名称)
{如果(object.hasownproperty(名字))
{ }…}
其他人提到了使用这个循环的问题(var i = 0;i <长度;+ +),因为Javascript没有代码块级变量,所以我的访问权限实际上是它的位置。一些书建议程序员将这些变量声明放在一个地方,但在大多数情况下,大多数情况下都不合理。
使用Javascript 1.7中引入的LET可以解决这个问题,使我成为一个真正的代码块级变量:
为了(让我= 0;i < a.length;i++)
最后,在眉目传情的Javascript式的指导,这种约束也涉及:
内回路:
仅用于在对象/哈希表中迭代密钥
以上是我们在javascript中使用for循环时应该注意的问题,这是对问题的总结。希望能对以后的工作和学习有所帮助。同时,我也欢迎你提出一些批评和建议。