在学习ES6的变量解构赋值的时候在demo中看到了for-of循环,现在就来总结一下JS中的各种循环
首先我们先来看看最初的循环
for(var i = 0;i<arrays.length;i++){
console.log(arrays[i]);
}
这其实是用的最多的循环吧,如果是我我想也会首选这个循环的,因为很想后端中的for循环
但是我们要记住我们是前端工程师,我们应该跟上时代变迁的脚步,在ES5的时代到来的时候我们应该改进我们的循环了
ES5中我们可以使用内建forEach方法遍历数组
myArrays.forEach(function(value){
console.log(value);
})
以上的代码看上去是不是很简洁,但是它也有一个缺点的就是不能使用break退出循环或者return返回外层函数
那么我们再看看for-in循环吧
for (var index in myArray) { // 千万别这样做
console.log(myArray[index]);
}
在JS中for-in循环适用于对象的遍历,而不适用于数组的遍历
使用for-in循环数组在赋值的时候会赋值为字符串赋值
作用于数组的for-in循环体除了遍历数组元素外,还会遍历自定义属性。举个例子,如果你的数组中有一个可枚举属性myArray.name,循环将额外执行一次,遍历到名为“name”的索引。就连数组原型链上的属性都能被访问到。
最让人震惊的是,在某些情况下,这段代码可能按照随机顺序遍历数组元素。
for-of循环来了
for (var value of myArray) {
console.log(value);
}
这是最简洁遍历数组的方法了
这个方法避开了for-in缺陷
与forEach()不同的是,它可以正确响应break、continue和return语句
for-of也是可以遍历其他集合
例如nodeList遍历,还可以遍历字符串,将每个字符串视为Unicode字符遍历
快快用起来吧!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。