美文网首页
for, forEach, for...in, for...of

for, forEach, for...in, for...of

作者: 五十岚色叶 | 来源:发表于2019-11-26 17:07 被阅读0次

日期:2019 年 11 月 26 日

几种循环方式的差异比较

我们平常在代码中经常会用到 for , forEach , for···in , for···of,map ,但是它们之间的区别是什么、能否终止循环以及适用的场景又是什么呢? 这篇文章针对这几种循环的方式作了一个小结,如下表:

方法名 break continue return 返回值 特性
for 跳出循环体 结束当前的循环 报错 没有返回值 循环次数确定
forEach 报错 报错 结束当前的循环 没有返回值 调用数组的每个元素,并将元素传递给回调函数
for...in 跳出循环体 结束当前的循环 报错 没有返回值 以任意顺序迭代对象的可枚举属性
for...of 跳出循环体 结束当前的循环 报错 没有返回值 遍历可迭代对象定义要迭代的数据
map 报错 报错 结束当前的循环 有返回值 遍历数组,返回新数组,但不改变原数组
详细案例请阅读下面的部分

for

for 循环一般用于循环次数确定的情况

当在 for 循环中使用 break 的时候,会直接跳出循环体


for-break.png

当在 for 循环中使用 continue 的时候,会结束当前的循环,进入下一次循环


for-continue.png

当在 for 循环中使用 return 的时候,会报错


for-return.png

for 循环是没有返回值的

forEach

forEach() 用于调用数组的每个元素,并将元素传递给回调函数
注意: forEach() 对于空数组是不会执行回调函数的

// 语法
array.forEach(function(currentValue, index, arr), thisValue)
param.png

当在 forEach 中使用 break 的时候,会报错


each-break.png

当在 forEach 中使用 continue 的时候,也会报错


each-continue.png

当在 forEach 中使用 return 的时候,会结束当前的循环,进入下一次循环


each-retrun.png

forEach 也是没有返回值的

for···in

for...in 语句用于对数组或者对象的属性进行循环操作
for...in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作
注意:for...in 语句以任意顺序迭代对象的可枚举属性(所以我们遍历的是数组索引或者对象的属性)

当在 for...in 中使用 break 的时候,会跳出循环体


in-break.png

当在 for...in 中使用 continue 的时候,会结束当前的循环,进入下一次循环


in-continue.png

当在 for...in 中使用 return 的时候,会报错


in-return.png

for...in 也是没有返回值的

for···of

for...of 语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句
注意:for...of 语句遍历可迭代对象定义要迭代的数据(遍历的就是对应的值,而不是索引或者属性)

当在 for...of 中使用 break 的时候,会跳出循环体


of-break.png

当在 for...of 中使用 continue 的时候,会结束当前的循环,进入下一次循环


of-continue.png

当在 for...of 中使用 return 的时候,会报错


of-return.png

for...of 也是没有返回值的

map

map() 方法按照原始数组元素顺序依次处理元素
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
注意:map() 不会改变原始数组

// 用法:
array.map(function(currentValue,index,arr), thisValue)
map-pa.png

当在 map 中使用 break 的时候,会报错


map-break.png

当在 map 中使用 continue 的时候,会报错


map-continue.png

当在 map 中使用 return 的时候,会结束当前的循环,进入下一次循环


map-return.png

map 是有返回值的

相关文章

网友评论

      本文标题:for, forEach, for...in, for...of

      本文链接:https://www.haomeiwen.com/subject/uklywctx.html