for in
什么都可以遍历(noodlist会显示原型上的属性)
for in多用于遍历对象,他会返回对象的属性名而for in不推荐遍历数组
为什么for in不推荐遍历数组
1.for in返回的是每个item的索引如果想对数组的每一项进行操作的话就会很复杂
2.for in返回的索引是字符串类型而不是number类型,如果我们像用这个索引加减来操作数组的话就会产生差错
for in的细节
1.遍历的属性名包括自身原型上的属性
2.遍历不一定按数组的下标顺序遍历
forEach
1.for…of 可以迭代数组、伪数组以及任何可以迭代的对象(maps、sets、DOM集合)也就是:拥有迭代器对象(iterator)的集合
常见的伪数组:arguments,getElementsByTagName和document.querySelectorAll以及getElementsByClassName等获取的NodeList对象和jQuery
对象,比如 $(“div”)
1.forEach是不能使用任何手段跳出循环的
2.关于他的参数
第一个参数是item
第二个参数是索引
第三个参数是当前遍历的数组
第四个参数是this指向,但是注意要写成function形式要是箭头函数默认直线外层函数(这里要是写成箭头函数第四个参数要是写成arrs了this也是指向window)
forEach要注意的点
第二个参数index不会随着函数体内部对它的增减而发生变化
for of
1.for…of 可以迭代数组、伪数组以及任何可以迭代的对象(maps、sets、DOM集合)也就是:拥有迭代器对象(iterator)的集合
常见的伪数组:arguments,getElementsByTagName和document.querySelectorAll以及getElementsByClassName等获取的NodeList对象和jQuery
对象,比如 $(“div”)
NodeList:包括document.querySelectorAll,getElementsByTagName返回的节点
2.for of遍历的只是数组内的元素不包括原型属性和索引
3.可以适用break终端循环
map
只能遍历数组
1.map不改变原数组但是会 返回新数组
好像就这一点。。