for..in和for..of的区别
前一段时间我碰到一个这样的问题:随便使用for..in和for..of给我带来了不可预期的后果,和我想得有点不太一样。关于for...in和for..of之间到底有什么区别?什么时候用for..in?什么时候用for..of呢?接下来,我将用代码作为示例来展示它们两者的差别。
首先看看遍历数组时 for...in和for...of的区别:
由上可知,控制台输出结果可以正常显示,对数组进行遍历时,for..in获取到的是每次遍历项的索引值,而for...of每次遍历获取到的则是每一个遍历项的value值。
在看看关于遍历对象时 for..in和for..of的区别:
通过控制台我们可以看出,使用for...in遍历对象时,每一次遍历得到的都是对象中的key值,而使用for..of遍历时则会报错(obj is not iterable),译为:obj这个对象不可迭代的,不能使用for..of遍历对象,它获取到的不是每一个遍历项的value值。
总结:
遍历数组时:for..in获取到的是每一项的索引值,而for..of获取到的是每一项的值
遍历对象时:for..in获取到的是每一项的key值(也就是属性名),而for..of不能用于遍历对象,会报错
扩展内容:Object.keys(obj)可以获取到obj的keys值,用数组形式保存;Object.values(obj)可以获取到obj的value值,也是用数组形式保存
for..in和for..of的区别相关推荐
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
- C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别
最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...
- gcc 和 g++ 的联系和区别,使用 gcc 编译 c++
GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...
- Python2 与 Python3 区别
Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...
- Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别
Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...
- HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)
TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...
- python二进制打开(rb)和文本格式打开(r)什么区别?
使用 open() 函数以文本格式打开文件和以二进制格式打开文件,唯一的区别是对文件中换行符的处理不同. 在 Windows 系统中,文件中用 "\r\n" 作为行末标识符(即换行 ...
- python中__dict__与dir()区别
前言 Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: _ ...
- java和C#面向对象的区别
问题:C#中的构造函数和java的构造函数一样吗? 答: .net的项目中,写实体Entity属性时,经常会为每一个属性写一对get和set方法,在用到这个实体或是一个类时,通过new实例化一个对象, ...
- 判别模型和生成模型的区别
20210703 https://www.zhihu.com/question/20446337 机器学习"判定模型"和"生成模型"有什么区别? 重点 http ...
最新文章
- 2018-3-10论文(网络评论非结构化信息表示与应用研究)笔记-----基于证据理论的综合评价模型建立
- 怎样去判断一个网站是不是伪静态网站
- 沟通无国界,云信助力译牛构建远程会议同传新模式
- 【转】React 16 中从 setState 返回 null 的妙用
- dibian+9+oracle+java_debian – 安装了Oracle Java,但在安装软件时,我得到了`你的Java版本不受支持....
- 2020 年“我爱计算机视觉”视频号最受欢迎视频 Top10!
- 苹果iPhone 13 Pro机型有望采用LTPO技术屏幕 支持120Hz刷新率
- 游戏世界观构建_我们如何构建技术落后的世界
- [Hacking]国内首届黑客大会COG2011现场报道(补)
- tomcat7插件的引入
- FPGA MCU FSMC通信接口——NAND Flash模式
- 软件工程-软件维护/系统维护
- 点云采样FPS原理及实现
- matlab 梯度下降 求偏导,吴恩达机器学习课程课时12梯度下降算法中参数θ0,θ1求偏导...
- 2021年国内PT站点汇总(中英文名称对照表)很全呦!
- vue滑杆_非常简单的Vue滑杆组件
- 外部表报错:ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错 ORA-29400: 数据插件错误KUP-04043: table column not found in ext
- Genesis公链加速区块链行业发展
- 解决Mysql:Incorrect string value: '\xF0\x9F\x8D\x83\xF0\x9F...' for column
- 【Java】电报 Telegram messenger for Android