for-in 与 for-of

77 阅读1分钟
var arr = [
      { id: 1, name: '张三' },
      { id: 2, name: '李四' },
      { id: 3, name: '王五' },
      { id: 4, name: '刘八' },
    ]

    for (const item of arr) {
      console.log(item);
    }
    	//{id: 1, name: "张三"}
 	//{id: 2, name: "李四"}
	//{id: 3, name: "王五"}
	//{id: 4, name: "刘八"}

var arr = {
      id : 1,
      name: '张三',
      age: 18
    }

    for (const key in arr) {
      console.log(key);    // id name age 
    }
    for (const key in arr) {
      if (arr.hasOwnProperty(key)) {
        const element = arr[key];
        console.log(element)    // 1 张三 18 
      }
    }
Object.hasOwnProperty(prop) 用来判断某个对象是否含有指定的属性的,返回值为Boolean ,该方法会忽略掉那些从原型链上继承到的属性。

for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。

for-in总是得到对象的key或数组、字符串的下标。

for-of总是得到对象的value或数组、字符串的值。