本文将汇总JS常用循环方法的使用方法和注意事项,以防用时纠结用哪个好。
1.for
首当其冲的就是for了,一想起循环,抬手就会敲出一个for,这算程序员的一个职业反射了。
一句话描述for:循环代码块一定的次数,循环的对象一般为数组。
例子:
```
var arr = [1,2,3];
for(var i=0,i<arr.length,i++){
console.log(arr[i]);// 控制台输出1 2 3
}
```
注意事项:
1.语句1用var声明,至于用var和let声明的区别,可以复制一下两段代码在控制台试试。
实不相瞒原理暂时没怎么看懂。 参考资料
//var
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},0)
}
//let
for(let i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},0)
}
2.语句2注意<和<=会引起边界问题,程序报错。
2.for...in
一句话描述for...in:循环遍历对象的属性。
例子:
var person = {fname:"John", lname:"Doe", age:25};
var text = "";
var x;
for (x in person) {
text += person[x];
}
//输出的结果为JohnDoe25
3.map
map经常用于页面的列表渲染,map在这里不是“地图”,称为“映射”更贴切一点。
一句话描述map:将原数映射成一个新的数组,并返回新数组。
语法:
array.map(function(currentValue,index,arr),thisValue)
//回调函数里的参数分别为:当前元素的值(Y)、索引值(N)、当前元素所对应的数组(N)
//thisValue(N):传给回调函数的,当做当前的this值,不传回调的默认值为全局的this
例子:
var arr = [6,7,8];
var arrOfSquares = arr.map(function(item){
return item*item
})
console.log(arrOfSquares)//36 49 64
注意事项:
1.map必须用return返回,缺少return 返回undefined
4.forEach
一句话描述:用于调用数组的每个元素,并将元素传递给回调函数。
语法:
array.forEach(function(currentValue, index, arr), thisValue)
//参数含义同map
例子:
var arr = [6,7,8];
arr.forEach(function(item){
var square = item*item
console.log(square)
})
//可以看出forEach 只是将数组中的元素传递给回调函数,一切都在回调函数中执行,并不返回新的数组
注意事项:
1.forEach,E大写(别笑)
2.当forEach() 对于空数组是不会执行回调函数的。
5.every
一句话描述:就是来挨个检查是否都符合条件,所有都符合就发通行卡true,有一个不符合直接全组out,返回false,且不再去检测后面的元素。
实话说这个不怎么常用,但是在整个数组元素是否都符合条件时却很有用,尤其是结果需要判断是yes or no的时候,比如判断购物车列表也是否全选。
语法:
array.every(function(currentValue,index,arr), thisValue)
//参数含义同map
例子:
var ages = [32, 33, 16, 40];
ages.every(function(){
return age >= 18;
});
//判断成员是否都已成年。
注意事项:
1.不会对空数组进行检测
2.every() 不会改变原始数组。
网友评论