欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

JS中for循环的四种写法示例(入门级)

时间:2022-10-08 12:54:32|栏目:JavaScript代码|点击:

1. 传统for循环

for (init; cond; inc) {
  // body
}

与C++或Java类似,for关键字后用小括号描述循环设置,在小括号中用两个分号;将循环设置隔断为三个部分,分别为:

  • init初始化语句(指令),在整个循环开始前执行
  • cond条件(逻辑表达式),表示循环继续的条件
  • inc自增语句(指令),在每次循环体结束以后执行

整个循环的执行步骤为:

  • 执行init语句
  • 计算cond表达式,若为假则退出循环
  • 执行循环体body
  • 执行inc语句,随后返回步骤2

例如:

let sum = 0
for (let i = 1; i <= 10; i++) {
  sum += i
}
console.log(sum) // 55

2. for of 循环

for (const v of iterable) {
  // body
}

这里的iterable是指各种能够被迭代的JS对象。最常用的例子是数组Array和字符串String,此外还有arguments、NodeList、Map、Set等等。执行的效果是,for循环会遍历iterable的每个项目,在每次循环中,代表变量v即为当前循环的项目。

例如:

const arr = [1, 2, 3, 4, 5]
let sum = 0
for (const v of arr) {
  sum += v
}
console.log(sum) // 15

高级:for await (const v of iterable) 可以用于异步循环遍历。

3. for in 循环

for (const k in object) {
  // body
}

for in循环会遍历object的每个属性,在每次循环中,代表变量k即为当前属性的属性名称(key)。

例如:

const obj = { a: 1, b: 2, c: 3 }
let sum = 0
for (const k in obj) {
  sum += obj[k] // read the value from key
}
console.log(sum) // 6

特别注意for of和for in的区别,前者的代表变量是项目的值(value),后者的代表变量是属性的名称(key)。

4. forEach方法

Array.forEach(Function)

forEach是JS数组的原生方法。它接受一个函数作为参数,执行效果是对数组的每一个项目,执行传入的函数。传入的函数可以接受三个参数:(element, index, array),其中element表示当前项目的值,index表示当前项目的下标,array表示循环的数组本身。

例如:

const arr = [1, 2, 3, 4, 5]
let sum = 0
arr.forEach(element => sum += element)
console.log(sum) // 15

通常在程序中我们更倾向于使用for of循环来代替forEach方法,因为for关键字使得代码的可读性更高。但是在一些特殊的情况下,我们依然会使用forEach方法循环遍历数组中的每个项目。

高级:forEach可以传入异步函数,等效于使用for await (const v of Array)。

附完整实例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script>  // 此处添加测试数组 textArr
    var textArr = [],
        i = 0;
    while (i<40000000) {
      textArr.push(i)
      i++
    }
    const forTest = (textArr) => {
      console.time('time forTest')
      var newArr = []    // 第一种写法 不带声明变量的写法 (运行效率最好,性能最佳)
      for (var i = 0; i < textArr.length; i++) {
        newArr.push(i)
      }
      console.timeEnd('time forTest')
    }
    const forTest1 = (textArr) => {     console.time('time forTest1')    var newArr = []    // 第二种带声明变量的写法 (相比之下要差一些)
for (var i = 0,len = textArr.length; i < len; i++) {
        newArr.push(i)
      }
      console.timeEnd('time forTest1')
    } 
    const forTest2 = (textArr) => {
      console.time('time forTest2')
      var newArr = []    // 第三种 forEach的写法  (效率最差,运行最慢)
      textArr.forEach(item => {
        newArr.push(item)
      })
      console.timeEnd('time forTest2')
    }
    const forTest3 = (textArr) => {
      console.time('time forTest3')
      var newArr = []    // 第四种是 for循环的简便写法, (运行效率与不带声明变量的写法相差无几,相比之下,可以使用这种写法,最优),仅仅是本人的观点
      for (var i = 1,cur; cur = textArr[i++];) {
        newArr.push(i)
      }
      console.timeEnd('time forTest3')
    }
    forTest(textArr)
    forTest1(textArr)
    forTest2(textArr)
    forTest3(textArr)
  </script>
</body>
</html>

总结

上一篇:微信小程序实现滑动验证拼图

栏    目:JavaScript代码

下一篇:Openlayers实现图形绘制

本文标题:JS中for循环的四种写法示例(入门级)

本文地址:http://www.codeinn.net/misctech/215775.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有