for in 与 for of 的区别

1. 返回结果不一样

for in 返回数组的key

for of 返回数组的value

var nums:number[] = [1001,1002,1003,1004] 
// for in
for (var key in nums) {
    console.log(key) 
}
// 输出:
/**0
   1
   2
   3
*/
// for of
for (var val of nums) {
    console.log(val)
}
// 输出:
/**1001
   1002
   1003
   1004
*/

2. for of 无法遍历对象

var objList = {
    id: '001',
    name: '仙女',
    age: 17
}
// for in
for (var key in objList) {
    console.log(key);
}
// 输出
/**id
   name
   age
*/
// for of
for (var val of objList) {
    console.log(val);
}
/**类型“{ id: string; name: string; age: number; }”必须具有返回迭代器的 "[Symbol.iterator]()" 方法。ts(2488)
*/

3. for in 会遍历自定义属性,for of不会

var nameList = ["胡八一", "王凯旋", "雪莉·杨"];
nameList.lastName = "金爷";
// for in
for (var key in nameList) {
    console.log(key+nameList[key])
}
/**
0胡八一
1王凯旋
2雪莉·杨
lastName金爷
*/
// for of
for (var key of nameList) {
    console.log(key)
}
/**
胡八一
王凯旋
雪莉·杨
*/
posted @ 2021-10-05 23:34  dzyany  阅读(132)  评论(0编辑  收藏  举报