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

 更新时间:2022年04月01日 08:52:03   作者:Phantomlsh  
对于for循环相信大家再常用不过了,下面这篇文章主要给大家介绍了关于JS中for循环的四种写法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

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>

总结

到此这篇关于JS中for循环的四种写法的文章就介绍到这了,更多相关JS for循环写法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 让ie6也支持websocket采用flash封装实现

    让ie6也支持websocket采用flash封装实现

    ie9都不支持websocket,何况ie6,往往这些不可思议的事情却意想不到的发生了;websocket能开发那么酷的功能,怎么能让ie拦住我们的脚步,用falsh封装吧,感兴趣的你可不要错过了哈
    2013-02-02
  • JavaScript获取系统自带的颜色选择器功能(图)

    JavaScript获取系统自带的颜色选择器功能(图)

    JavaScript获取系统自带的颜色选择器功能,这个是针对IE浏览器,所以大家如果想用兼容性更好的代码,可以查看脚本之家的相关文章。
    2010-08-08
  • Bootstrap面板(Panels)的简单实现代码

    Bootstrap面板(Panels)的简单实现代码

    这篇文章主要为大家详细介绍了Bootstrap面板(Panels)的简单实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • JavaScript对象解构的用法实例解析

    JavaScript对象解构的用法实例解析

    解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性赋给各种变量,下面这篇文章主要给大家介绍了关于JavaScript对象解构用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • 深入理解setTimeout函数和setInterval函数

    深入理解setTimeout函数和setInterval函数

    下面小编就为大家带来一篇深入理解setTimeout函数和setInterval函数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • JS实现n秒后自动跳转的两种方法

    JS实现n秒后自动跳转的两种方法

    这篇文章主要为大家详细介绍了JS实现n秒后自动跳转的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • bootstrap modal+gridview实现弹出框效果

    bootstrap modal+gridview实现弹出框效果

    这篇文章主要介绍了bootstrap modal+gridview实现弹出框效果,gridview点击更新弹出填写信息表单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • javascript实现倒计时N秒后网页自动跳转代码

    javascript实现倒计时N秒后网页自动跳转代码

    这篇文章主要介绍了javascript实现倒计时N秒后网页自动跳转代码,非常的实用,这里推荐给大家。
    2014-12-12
  • 微信小程序实现预览图片功能

    微信小程序实现预览图片功能

    这篇文章主要为大家详细介绍了微信小程序实现预览图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • javaScript数组迭代方法详解

    javaScript数组迭代方法详解

    这篇文章主要为大家详细介绍了javaScript数组迭代方法,ECMAScript5为数组定义了5个迭代方法,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论