千家信息网

JS中六种For循环怎么使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"JS中六种For循环怎么使用",在日常操作中,相信很多人在JS中六种For循环怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"JS中六种For循
千家信息网最后更新 2026年11月02日JS中六种For循环怎么使用

这篇文章主要介绍"JS中六种For循环怎么使用",在日常操作中,相信很多人在JS中六种For循环怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"JS中六种For循环怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    for 循环在平时开发中使用频率最高的,前后端数据交互时,常见的数据类型就是数组和对象,处理对象和数组时经常使用到 for 遍历,因此下班前花费几分钟彻底搞懂这 5 种 for 循环。它们分别为:

    • for

    • for ... in

    • for ... of

    • for await .. of

    • forEach

    • map

    一、各个 for 介绍

    1、for

    for 循环是出现最早,也是应用最普遍的一个遍历,能够满足绝大多数的遍历。可以遍历 数组、对象、字符串,示例:

    // 遍历数组var arr = [1, 2, 3]for (var i = 0; i < arr.length; i++){  console.log(arr[i]);}//遍历对象var obj = {  job: 'web worker',  name:'前端代码女神'}for (var i = 0,keys = Object.keys(obj); i< keys.length; i++){  console.log(obj[keys[i]])}//遍历字符串let str = 'abc'for (var i = 0; i < str.length; i++){  console.log(str[i])}

    2、for ... in

    for ... in 是在 ES5 中新增的,以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。

    // 遍历数组var arr = [1, 2, 3]for (var i in arr ){  console.log(i);//0 1 2  console.log(arr[i]);//1 2 3}//遍历对象var obj = {  job: 'web worker',  name:'前端代码女神'}for (var key in obj){  console.log(key)// job name  console.log(obj[key])// web worker  前端代码女神}//遍历字符串let str = 'abc'for (var i in str){  console.log(i) // 0 1 2  console.log(str[i]) // a b c}

    3、for ... of

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

    // 迭代 Arrayvar arr = [1, 2, 3]for (var val of arr ){  console.log(val);// 1 2 3}//迭代 Stringlet str = 'abc'for (var val of str){  console.log(val) // a b c}// 迭代 TypedArray - 一个类型化数组,描述了一个底层的二进制数据缓冲区!let iterable = new Uint8Array([0x00, 0xff]);for (let value of iterable) {  console.log(value);//0 255}// 迭代 Map - 对象保存键值对,能够记住键的原始插入顺序let map = new Map([['a',1],['b',2]])for (let key of map) {  console.log('key',key)//['a',1] ['b',2] }for (let [key,value] of map) {  console.log(key) // a b  console.log(value) // 1 2}// 迭代 Setlet set = new Set([1,2,3,2,1])for (let val of set) {  console.log(val)// 1 2 3}

    4、for await...of

    创建一个循环,该循环遍历异步可迭代对象以及同步可迭代对象,包括内置的 String、Array,类数组对象(arguments 或 nodeList),TypedArray, Map, Set 和用户定义的异步/同步迭代器。它使用对象的每个不同属性的值调用要执行的语句来调用自定义迭代钩子。

    类似于 await 运算符一样,该语句只能在一个async function 内部使用。

    async function* asyncGenerator() {  var i = 0;  while (i < 3) {    yield i++;  }}(async function () {  for await (num of asyncGenerator()) {    console.log(num);// 0 1 2  }})();

    5、forEach

    forEach 是ES5版本发布的,按升序为数组中含有效值的每一项执行一次回调函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上),一般认为是 普通for循环 的加强版。

    // 遍历数组var arr = [1, 2, 3]arr.forEach((item, index) => {  console.log(index);//0 1 2  console.log(item);// 1 2 3})//遍历对象var obj = {  job: 'web worker',  name:'前端代码女神'}var keys = Object.keys(obj)keys.forEach((key) => {  console.log(key)// job name  console.log(obj[key])// web worker  前端代码女神})

    6、map

    遍历时可以返回一个新数组,新数组的结果是原数组中每个元素都调用一次提供的函数后返回的值。

    // 遍历数组var arr = [1, 2, 3]let newArr = arr.map((item) => item * 2)console.log(newArr);//[2,4,6]

    二、多个 for 之间区别

    1、使用场景差异

    for循环是最早最原始的循环遍历语句,for 内部定义一个变量,按照条件进行循环遍历,通常是数组的长度,当超过长度时就停止循环,一般遍历的都是数组或类数组。遍历对象时,由于对象没有长度,所以使用 Object.keys() 获取对象的所有属性,以数组形式返回。

    for / in主要是用来遍历对象上的可枚举属性,包括原型对象上的属性,按任意顺序进行遍历,遍历对象时获取到的是属性的键值,遍历的是数组,数组的下标当做键值。

    for / of用于遍历可迭代对象的数据,包括 Array、Map、Set、String、TypedArray、arguments 对象等等。

    for await...of用于遍历异步可迭代对象,该语句只能在一个async function 内部使用。

    forEach 是 for 的加升级版,使用更简单,携带参数更多,但本质还是数组的循环,每个元素都执行一次回调,不会改变原数组。

    map是给原数组每个元素都执行一次回调,返回一个新数组,不会改变原数组。

    2、功能差异

    forEach、map 不支持跳出循环,其他不支持。

    for await ... of 能够支持异步操作,其他的不支持。

    对于纯对象的遍历, for ... in 枚举更方便。

    对于数组遍历,如果不需要索引,可以直接使用 for...of 获取值,还可支持 break 或 return ;如果还需要索引,使用 forEach 更适合,但不支持 return。

    如果是一个数组映射成另一个数组,使用 map 最合适。

    3、性能差异

    在测试环境、测试数据条件一致的情况下,性能排序为:

    for > for of > forEach > map > for in。

    for 因为没有额外的函数调用和上下文,所以性能是最快的。

    for ... of 具有 iterator 接口的数据结构,可以使用它来迭代成员,直接读取键值。

    forEach 是 for 的语法糖,还有许多的参数和上下文,因此会慢一些。

    map 因为它返回的是一个等长的全新数组,数组创建和赋值产生的性能开销较大。

    for...in 性能最差,因为需要列举对象的所有属性,有转化过程,开销比较大。

    三、for 的使用

    在项目开发中,我们应该根据实际需求,去选择一个合适的 for 遍历。以下是一些使用建议:

    • 如果需要把数据映射成另外一个数组,如变成对应布尔值,推荐使用 map ,不会修改原数组,使用语法简单。

    • 数组遍历时,可以使用 for 、forEach 或 for...of。

    • 遍历的是纯对象时,推荐使用 for ... in 。

    • 如果是需要对迭代器遍历,推荐使用 for ... of。

    • 如果是在数组中筛选符合条件的数组,使用 fillter 。

    到此,关于"JS中六种For循环怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    数组 对象 循环 迭代 属性 数据 语句 支持 代码 前端 女神 性能 学习 元素 函数 字符 字符串 差异 更多 条件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 互联网科技深圳 互联网科技开发公司 广州善班互联网科技 海南购全球互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 互联网科技产品 北京大学互联网科技怎么样 宜昌元轩互联网科技有限公司 本届互联网博览会上的黑科技 华夏恒生科技与互联网科技 众安科技工业互联网合作 互联网金融科技公司的优势 上海钢联属于互联网科技股吗 广州有谷有贝互联网科技有限公司 互联网高科技行业有哪些企业 互联网科技对化妆品行业 北京瑞云互联网科技有限公司 互联网科技快速发展优美句子 株洲百竞科技的互联网营销顾问 咖啡 互联网黑科技 互联网科技公司起名 上海卓越科技 互联网 汉立互联网科技有限公司联系电话 互联网科技公司的市场部门 互联网科技产品 中盈科技互联网信息有限公司 华夏恒生科技与互联网科技 深圳市罗太互联网科技有限公司
    0