简介
本文只是拓展一下在实际项目中我是如何使用循环的,在使用循环的时候我怎么把代码写到极致,让代码更加精简,也许你在工作中遇到过。但你看完这篇文章你会觉得,原来还可以这样写。
JavaScript中的循环
JavaScript在本文简称:js。js中循环分以下几大类:
1. for循环
2. for in 循环
3. while循环
4. do while循环
5. 数组原型带的方法:map、every、some、等//这些暂时不讨论
例子
这是我们最常使用的循环。很直观明了。
for(var i=0;i<10;i++){
console.log(i);
}
如果对于循环不要求顺序的话我会这样写。
for(var i=10;i--;){
console.log(i);
}
//代码明显比上边少了些
如果我们在循环的时候循环的是数组,数组内是函数或者对象或者是值。我们可以这样写
var list=[1,2,3,4,5,6,7,8,9,10];
for(var i=0,item;item=list[i++];){
console.log(item);
}
//也可以使用数组原型提供的方法
在使用 for in 循环的时候我们需要注意的是
遍历的如果是对象,如果它的键是枚举属性,才可以遍历。
遍历的如果是对象,它是不会按照顺序遍历的。
var obj={
1:100,
b:2,
a:1,
c:3,
0:200
};
Object.defineProperty(obj,"a",{
enumerable:false
});
for (var i in obj){
console.log(obj[i])
}
在使用while 循环的时候
不要求顺序可以这样写
var list=[1,2,3,4,5],
l=list.length;
while(l--){
console.log(list[l])
}
要求顺序是这样写
var list=[1,2,3,4,5],
l=list.length,
i=0;
while(i<l){
console.log(list[i])
i++;
}
使用do while 的时候
var list=[],
l=list.length,
i=0;
do{
console.log(list[i]);
i++
}while(i<l)
需要注意的是无论如何,都会先执行do不管条件成立与否
特解
比如数组删除某一个数据的时候
var list=[{a:1},{a:2},{a:3},{a:5}];
l=list.length;
for(var i=0;i<l;i++){
if(list[i].a===2){
list.splice(i,1);
l--;//如果没有加这段代码就会带来问题。因为splice会改变数组的长度。
}
}
//这样的代码如果没有 l-- 肯定会有问题。如果使用下边方式倒序则很轻松实现
//或者这样
var list=[{a:1},{a:2},{a:3},{a:5}];
for(var i=0;i<list.length;i++){
if(list[i].a===2){
list.splice(i,1);
i--;//如果没有加这段代码就会带来问题。因为splice会改变数组的长度。
}
}
倒序则很轻松实现,不用考虑splice带来的影响。
var list=[{a:1},{a:2},{a:3},{a:5}];
l=list.length;
while(l--){
if(list[l].a===2){
list.splice(i,1);
}
}
总结
有些时候我建议还是把代码写的规范一些,有些时候需要封装一些不提供给别人看的代码库时候,则可以使用简写方式。总之,根据自己实际需求去写。小小文章不成大器,望各位看官留个好评。