hooyes 灵感纵容非凡

Javascript for of VS for in 两者区别

2015-10-01
hooyes

与别的文章不同,本文的目的是以最简单,最快速的方式理解for of 与 for in 的区别

一句话

for of 遍历的结果是值,for in 遍历的结果是索引

例子1

let arr = ["Apple","Samsung","Nokia","Xiaomi"]

for(let x of arr){
  console.log(x)
}

// Apple Samsung Nokia Xiaomi

for(let x in arr){
  console.log(x)
}

// 0 1 2 3

例子2

let obj = { Apple:"iPhone X", Samsung:"Galaxy 6", Nokia:"Lumia",Xiaomi:"Note 3" }

for(let x of obj){
  console.log(x)
}

// !! 这样就报错了(obj is not iterable)原因后续说明

for(let x in obj){
  console.log(x)
}

// Apple Samsung Nokia Xiaomi

例子2说明 for-of 遍历值是有前提的,前提是这个值的索引是可以迭代的。而 for-in 遍历的是索引可以是任意对象。

例子3


function* company(){
  yield 'Apple';
  yield 'Samsung';
  yield 'Nokia';
  yield 'Xiaomi';
}


for(let x of company()){
  console.log(x)
}

// Apple Samsung Nokia Xiaomi

for(let x in company()){
  console.log(x)
}

// !! 这将什么都不会输出


例子3说明 for-of 遍历可以迭代的任意对象。而 for-in 遍历的是必需有明确索引的对象。

总结

for of 遍历的结果是值,并且被遍历的对象必须是可以迭代的,for in 遍历的结果是索引,并且这个索引必须是明确的。


// 天啊 我的例子中居然有 Nokia , 难道是为了实现左手一个诺基亚右手一个摩托罗拉的情怀吗。
// Hooyes 的第一台手机就是 Nokia 的,现在的Nokia 今非昔比,令人唏嘘。


Similar Posts

Content
TOP