区分 for...in 和 for...of
2024-10-08 12:25:04
我们都知道在 JavaScript 中 for...in 和 for...of 都可以迭代一个数组,但他们之间也有着很大的区别:
区别一:用于迭代器的返回值不同
for...in 和 for...of 最明显的区别莫过于他们用于迭代器的返回值不同,for...in 迭代的是对象的键,而 for...of 迭代的是对象的值。我们可以通过下面的例子对二者进行区分:
const array = [3,4,5] for (let i in array) {
console.log(i) //0,1,2
} for (let i of array) {
console.log(i) //3,4,5
}
区别二:功能权限不同
另一个区别在于,for...in 可以操作任何对象,提供了查看对象属性的一种方法。但是 for...of 关注迭代对象的值,内置对象Map和Set已经实现了Symbol.iterator 方法,让我们可以访问它们的值:
const fruits = new Set(['apple','pear','mango'])
fruits['peach'] = 'Princess Peach! Make a wish!' for(let fruit in fruits) {
console.log(fruit) //peach
} for (let fruit of fruits) {
console.log(fruit) //apple pear mango
}
但是这样的特性仅仅在 ES6 及以上才生效。
最新文章
- Redis集群(四):主从配置二
- 运费模版源码(.net)
- C#的157个建议--读书笔记(一)
- OpenJudge计算概论-求特殊自然数【枚举法】【将整数转成字符串】
- SQLite&;&;SharedPreferences&;&;IO读写Sdcard学习笔记
- shell运行报 too many arguments错误
- ES6学习笔记(二)
- ubuntu系统安装flashplayer
- Jsp中三种注释
- 解析一下rtmp协议比较难懂的地方
- Oracle SQL Lesson (5) - 使用组函数输出聚合数据
- CentOS系统下搭建tomcat服务器
- 关于处理java.lang.IllegalArgumentException at java.sql.Date.getHours异常
- SQLite 线程安全和并发
- 【cf842D】Vitya and Strange Lesson(01字典树)
- linux解压类型总结
- 学习笔记TF025:自编码器
- vc下项目的头文件包含目录以及库导入预计库目录设置
- Python学习-19.Python的Http模块
- 把NDK的工具链提取出来单独使用