for in在javascript中的具体情况是:
1、解析
for...in 语句对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。 for (variable in [object | array])
2、参数
variable,必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。object, array,可选项。要在其上遍历的对象或数组。
3、说明
在循环的每次迭代前,variable 被赋予 object 的下一个属性或 array 的下一个元素。然后可以在循环内的任一语句中使用它,就好像正在使用 object 的该属性或 array 的该元素一样。
当在一个对象上迭代时,没有办法决定或控制把对象的成员赋给 variable 的次序。在数组内将按元素的次序执行迭代,也就是,0、1、2、......
JS的 for 循环主要包含如下几种: for(let i = 0i <leni++) , for-in , for-of , for-each 。
至于第一种 for 循环,地球人都会,按下不表。难点在于 for-in , for-of , for-each 直接有什么区别,看起来都差不多的样子。
一句话概述 for-in 与 for-of : for-in 遍历得到的是 key 值,适用于对象的遍历, for-of 得到的是 value 值,适合数组的遍历。只要有 iterator 接口的数据结构,都可以使用 for-of 循环,包括: Array, Map, Set, String, arguments对象, Nodelist对象
获得的是属性值
获得的是对象的索引值
遍历的时候不要用这个!
当给数组的原型添加属性时,for in 会遍历到原型链上的属性
这时候只要判断是不是本身所有的属性就行了
传入匿名的回调函数,匿名函数的参数为:当前项item,索引index(可省),当前数组array(可省)
for-of这个方法避开了for-in循环的所有缺陷
与forEach()不同的是,它可以正确响应break、continue和return语句
map遍历与foreach类似,支持使用return语句,支持return返回值
参考链接 link