for...in...、for...of...、forEach比较

forEach:

  使用return、break等均无法跳出循环

for..in:

  1.for in应用于数组,会将数组中的元素和自定义的属性和方法都遍历,自定义在原型对象上的方法也会遍历出来 

  Array.prototype.sayHello = function(){
    console.log("Hello")
  }
  Array.prototype.str = 'world';
  var myArray = [1,2,10,30,100];
  myArray.name='数组';
  for(let index in myArray){
  console.log(index);
}

  输出结果:0,1,2,3,4,name,sayHello,str

  遍历的是索引,一般不适用于遍历数组,更适用于遍历对象,遍历对象的时候返回对象的属性名和原型上的可枚举方法和属性。

  如果遍历数组,有以下不合适:

    1.遍历的索引是一个字符串的数字,不可直接进行运算

    2.遍历出来的顺序可能并不是实际的顺序

    3.会遍历出原型上所有可枚举属性和方法

     2.for in应用于对象,也会将对象的属性和对象原型的属性一起遍历出来

  Object.prototype.sayHello = function(){

    console.log('Hello');

  }

    Object.prototype.str = 'World';

    var myObject = {name:'zhangsan',age:100};

    for(let index in myObject){

    console.log(index);

  }

  //输出结果 name,age,str,sayHello

for..of

    只能遍历数组,无法循环遍历对象,输出的是数组的值,不会遍历自定义属性或者原型上的属性和方法

     

猜你喜欢

转载自www.cnblogs.com/xieyandabai/p/11240575.html