版权声明:
尊重知识产权,严厉打击非法采集。
与别的文章不同,本文的目的是以最简单,最快速的方式理解for of 与 for in 的区别
for of 遍历的结果是值,for in 遍历的结果是索引
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
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 遍历的是索引可以是任意对象。
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 今非昔比,令人唏嘘。
$ welcome to hooyes.net
[INFO] ------------------------------o-
[INFO] Author : HOOYES
[INFO] Site : https://hooyes.net
[INFO] Page : https://hooyes.net/p/javascript-for-of-vs-for-in
[INFO] Last build : 2023-07-31 09:16:20 +0000
[INFO] -0------------------------------
上一篇 中国身份证正则表达式