for in是ES5标准,for of是ES6标准;

for in是遍历对象属性,for of是遍历对象元素。

for of兼容性还不够,移动端安卓微信浏览器貌似不支持,苹果的可以;web端IE支持也不够,chrome可以。

先说结论:

  1. 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of

  2. for...in循环出的是key,for...of循环出的是value

  3. 注意,for...of是ES6新引入的特性。修复了ES5引入的for...in的不足

  4. for...of不能循环普通的对象,需要通过和Object.keys()搭配使用

var student={name:'wujunchuan',age:22,locate:{country:'china',city:'xiamen',school:'XMUT'}
}
for(let key in student){console.log(key); //输出的是属性    console.log(student[key]); //输出的是属性值
}//name  age locate

var student={name:'wujunchuan',age:22,locate:{country:'china',city:'xiamen',school:'XMUT'}
}
for(let key of Object.keys(student)){console.log(key); //使用Object.keys()方法获取对象key的数组    console.log(student[key]) ;//输出的是属性值
}

var arr= ['a','b','c']
for(let key in arr){console.log(key);//输出的是  键名 0 1 2console.log(arr[key]);//输出的是 键值 a b c
}

var arr= ['a','b','c','d','e']
for(let value of arr){console.log(value);//输出的是 键值 a b c d e
}

var arr= ['a','b','c','d','e']
for(let key of arr.keys()){console.log(key);//输出的是键名 0 1 2 3 4
}

var arr= ['a','b']
for(let case of arr.entries()){console.log(case);//输出的是键值对 [0,'a'] [1,'b']
}

转载于:https://www.cnblogs.com/jkr666666/p/8033714.html

javascript总for of和for in的区别?相关推荐

  1. java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

  2. html5有foreach吗,JavaScript中的map()和forEach()有什么区别?

    来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...

  3. JavaScript中的name和classname有什么区别

    JavaScript 中的 name 和 className 有如下区别: name 属性通常用于表示 HTML 元素的名称,如表单元素中的 input 元素.它可以用于给服务器发送数据. class ...

  4. 你可能不知道系列--JavaScript严格模式与非严格模式的区别

    对于 JavaScript 严格模式与非严格模式的区别,强烈建议大家去查看权威文档 MDN: 严格模式,不要乱找百度,本文也主要是参考了 MDN 上对 JS 严格模式 的介绍. 首先,严格模式通过抛出 ...

  5. JavaScript、ES5和ES6的介绍和区别

    JavaScript简介 JavaScript一种动态类型.弱类型.基于原型的客户端脚本语言,用来给HTML网页增加动态功能. JavaScript由三部分组成: ECMAScript(核心)+DOM ...

  6. Javascript 中 null、NaN和undefined的区别

    1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码 var a1; var a2 = tr ...

  7. html中事件调用JavaScript函数时有return与没有return的区别

    2019独角兽企业重金招聘Python工程师标准>>> JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. ...

  8. JavaScript中的数组与伪数组的区别

    在JavaScript中,除了5种原始数据类型之外,其他所有的都是对象,包括函数(Function). 基本数据类型:String,boolean,Number,Undefined, Null 引用数 ...

  9. JavaScript中call()和apply()的用法及区别

    call(), apply()都属于Function.prototype的一个方法.它们有相同点也有不同点. 相同点: 1.产生的效果和作用是完全相同的: 2.至少有一个参数,第一个参数必须是一个对象 ...

最新文章

  1. jQuery addClass,removeClass,class属性增删
  2. 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
  3. python第三方库numpy-Python第三方库之Numpy库
  4. 技术深扒丨没点想象力都看不透这个网站的反爬措施!
  5. 大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...
  6. leetcode 1489. 找到最小生成树里的关键边和伪关键边(并查集)
  7. mysql数据修改-DEDE
  8. 编程道场_编码道场教给我有关敏捷的知识
  9. matlab中ifelse能嵌套吗,嵌套if语句(nested if statements)
  10. HTML的基本知识-和常用标签-以及相对路径和绝对路径的区别
  11. 在doPost,service等方法里配置字符编码过滤器,防止出现中文乱码
  12. 阿里云张献涛:2021 弹性计算发生了哪些变化
  13. android 音效,音效  |  Android 开源项目  |  Android Open Source Project
  14. 还在纠结报表工具选型吗
  15. 中国象棋(人机博弈)
  16. SPSS在物流业中的应用
  17. linux 启动服务 sys,从磁盘启动的过程与SYSLINUX
  18. 如何在Google Chrome中手动设置位置信息
  19. 你觉得学 Python 还是 Java 更好找工作?
  20. 22222222222

热门文章

  1. 强健程序员体魄————减脂原理
  2. linux一级常用目录,小蚂蚁学习Linux(3)——Linux一级目录说明和常用命令解释...
  3. latex 图片大小_用LaTeX写作业——插入图片(二)
  4. stm32 USART
  5. StringBuffer和StringBuild
  6. 2016宁波计算机程序复赛,宁波第31届中小学生计算机程序设计竞赛复赛试题小学组.PDF...
  7. 关于 mac m1 xcode12 编译报错 this target. for architecture arm64等问题解决方案
  8. MySQL 条件查询
  9. Jsoup设置元素的文本内容
  10. Java - 计算不同字符或数字的个数