for

  1. arr = [11, 22, 33, 44, 55];
  2. for(let i=0; i<arr.length; i++) {
  3. console.log(arr[i])
  4. }

可以使用 continue 跳过一次循环,或者 break 终止循环

forEach

语法:**arr.forEach(callback[, thisArg]);
参数:
callback
thisArg ** 执行回调函数时 this 的值(参考对象),如果使用箭头函数会忽略 thisArg

  1. arr = [11, 22, 33, 44, 55];
  2. arr.forEach((item, index, array) => {
  3. console.log(item, index, array);
  4. })

无法使用 continue 和 break
没有返回值
MDN:没有办法中止或者跳出 forEach() 循环,除了抛出一个异常。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
return 可以终止函数执行,因此可以使用 return 跳过一次 forEach 循环,类似for循环中 continue 的效果

使用 thisArg 参数
image.png

for…in

for...in语句以任意顺序遍历一个对象自有的、继承的、可枚举的、非Symbol的属性

  1. obj = { name: 'jack', age: 22, car: 'BMW',school: 'hf' };
  2. for(var k in obj) {
  3. console.log(k, obj[k])
  4. }

可以使用 continue 跳过一次循环,或者 break 终止循环
for...in不应该用于迭代一个 Array

for…of

for...of语句可迭代对象(包括 ArrayMapSetStringTypedArrayarguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

  1. arr = [11, 22, 33, 44, 55];
  2. for(let v of arr){
  3. console.log(v)
  4. }

MDN:对于for...of的循环,可以由break, throw continuereturn终止
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for…of#关闭迭代器
实测发现:可以使用 continue | break | throw

return

return 语句终止函数的执行,并返回一个指定的值给函数调用者
如果没有返回值,则默认返回 undefined

image.png