嗨:说您呢,循环了解一下

简介

本文只是拓展一下在实际项目中我是如何使用循环的,在使用循环的时候我怎么把代码写到极致,让代码更加精简,也许你在工作中遇到过。但你看完这篇文章你会觉得,原来还可以这样写。

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);
	}
}

总结

有些时候我建议还是把代码写的规范一些,有些时候需要封装一些不提供给别人看的代码库时候,则可以使用简写方式。总之,根据自己实际需求去写。小小文章不成大器,望各位看官留个好评。

原文地址:https://www.cnblogs.com/xiaoxiaokun/p/9856896.html