新闻中心
J*aScript中for...of与for...in循环区别_j*ascript技巧
for...in遍历对象的可枚举属性名,包括继承属性,适用于对象;for...of遍历可迭代对象的值,如数组、字符串等,不适用于普通对象。

for...of 和 for...in 是 J*aScript 中两种不同的循环语法,虽然写法相似,但用途和行为有本质区别。理解它们的差异有助于在实际开发中正确选择使用场景。
for...in 遍历对象的键(key)
for...in 用于遍历对象的**可枚举属性名**(即键),包括自身和继承的属性(来自原型链)。它适用于普通对象,不推荐用于数组。
常见用法:
- 遍历对象的所有可枚举属性
- 获取属性名进行操作
for (let key in obj) {
console.log(key); // 输出: "a", "b", "c"
}
注意:如果对象的属性来自原型链或被设置为不可枚举,可能不会按预期输出。建议配合 hasOwnProperty 使用以避免遍历继承属性:
for (let key in obj) {if (obj.hasOwnProperty(key)) {
console.log(key, obj[key]);
}
}
for...of 遍历可迭代对象的值(value)
for...of 用于遍历实现了 Iterable 接口的对象,如数组、字符串、Map、Set、arguments 等。它直接获取的是元素的值,而不是键。
OneStory
OneStory 是一款创新的AI故事生成助手,用AI快速生成连续性、一致性的角色和故事。
319
查看详情
适用对象:
- Array
- String
- M
ap - Set
- arguments
- NodeList(DOM 节点集合)
for (let value of arr) {
console.log(value); // 输出: 10, 20, 30
} const str = "hi";
for (let char of str) {
console.log(char); // 输出: "h", "i"
}
for...of 不适用于普通对象,因为普通对象默认不可迭代。尝试对普通对象使用会报错:
const obj = { a: 1 };// for (let v of obj) { } // 报错:obj is not iterable
关键区别总结
| 特性 | for...in | for...of |
|---|---|---|
| 遍历目标 | 对象的可枚举属性名(key) | 可迭代对象的值(value) |
| 适用对象 | 所有对象(包括数组) | 数组、字符串、Map、Set 等可迭代对象 |
| 是否包含继承属性 | 是(需用 hasOwnProperty 过滤) | 否 |
| 能否用于普通对象 | 可以 | 不可以(会报错) |
| 顺序 | 不一定保证顺序(尤其非整数键) | 按插入或索引顺序 |
使用建议
- 遍历数组元素值时,优先使用 for...of
- 遍历对象的属性时,使用 for...in,并检查 hasOwnProperty
- 需要同时获取索引和值时,数组可用 entries() 配合 for...of:
console.log(index, value);
}
基本上就这些。掌握它们的核心差异,能让你写出更清晰、安全的循环代码。
以上就是J*aScript中for...of与for...in循环区别_j*ascript技巧的详细内容,更多请关注其它相关文章!
# java
# node
# 区别
# 可迭代对象
# 遍历
# 迭代
# 如何实现
# javascript
# 珠宝首饰营销推广方案
# 中国机器人推广网站有哪些
# 果洛做网站推广
# 国外的推广网站新闻
# 宜春全屏营销推广
# 公司怎么推广自己的网站
# 长沙网站推广
# 北京抖音SEO电商
# 字节seo是什么
# 柳州网站建设单价
# 不可以
# 两种
# 不适用于
# 的是
# 如何处理
# 适用于
# 报错
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
b站怎么删除评论_b站评论管理与删除操作
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
自定义Bag-of-Words实现:处理带负号的词汇权重
斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程
Lar*el Excel导入时生成自定义递增ID的策略与实践
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
将HTML Canvas内容转换为可上传的图像文件(File对象)
c++ 命名空间怎么用 c++ namespace使用指南
快手官方唯一登录入口 谨防山寨钓鱼网站
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
AO3最新镜像入口 Archive of Our Own官方平台访问
AO3最新入口2025公告_AO3中文官网合集
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
Animex动漫社网入口地址 Animex动漫社网正版在线入口
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
BetterDiscord插件中安全更新用户简介的实践指南
Lar*el递归关系中排除子孙节点的策略
天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南
抖音怎么赚钱_抖音创作者变现方法与途径指南
QQ官网正版登录链接 QQ在线登录入口最新
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
J*aScript设计模式实践_j*ascript代码优化
J*a 递归快速排序中静态变量的状态管理与陷阱
微博网页版官方账号登录 微博网页版内容浏览使用指南
文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】
邮政快递单号查询入口 邮政快递物流信息在线查询入口
在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南
C++ explicit关键字防止隐式转换_C++构造函数安全规范
Go语言中动态执行代码字符串的策略与实践
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
深入理解Promise链:如何在catch后中断then的执行
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程
Lar*el 递归关系中排除指定分支的教程
网站内容防复制粘贴的实现策略与局限性
《燕云十六声》两周内达九百万玩家!位居畅销榜第五
汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口
DLsite中文平台入口 DLsite官网内容在线查看
响应式图片在网页设计中的正确实现方法
海棠账号登录入口_登录海棠账户同步阅读记录
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略


2025-11-03
浏览次数:次
返回列表
ap