几种循环方式的差异比较

日期:2019 年 11 月 26 日

几种循环方式的差异比较

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

方法名breakcontinuereturn返回值特性
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 是有返回值的

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值