有关循环的关键字(for /for in/forEach /in)

in
参考学习:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/in
指定的属性在指定的对象或其原型链中,则in 运算符返回true。
(prop in object)
prop:一个字符串类型或者 symbol 类型的属性名或者数组索引(非symbol类型将会强制转为字符串)。

如果你使用 delete 运算符删除了一个属性,则 in 运算符对所删除属性返回 false。
如果你只是将一个属性的值赋值为undefined,而没有删除它,则 in 运算仍然会返回true。

继承属性:
如果一个属性是从原型链上继承来的,in 运算符也会返回 true。
“toString” in {}; // 返回true
for in
for in的写法:

var wq = {
  age:20,
  name:"咸鱼",
  sex:"男"
}
 
for(var attr in wq){//attr是属性,attr可以换成任意变量名
  console.log(attr);//  输出的是 属性名:age  name  sex
  console.log(wq[attr]);//属性相对应的值  20  咸鱼  男
}

forEach
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
array.forEach(function(currentValue, index, arr), thisValue)

currentValue 必需。
当前元素 index 可选。当前元素的索引值。
arr 可选。当前元素所属的数组对象。

for in也可以遍历数组,但是会存在以下几个问题。

1、index索引为字符串型数字,不能直接进行几何运算

2、遍历顺序有可能不是按照实际数组的内部顺序

3、使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性

遍历普通数组的话,用for是最好的选择,但是如果是对象,就for in就好了。

猜你喜欢

转载自blog.csdn.net/weixin_41989325/article/details/89785328
今日推荐