for of和 for in的区别

简介: JavaScript中,for...of遍历可迭代对象的值,适合数组;for...in遍历对象属性,注意其遍历顺序不确定且包括继承属性,可用hasOwnProperty判断自身属性。同步指任务依次执行,异步则通过回调或事件实现非阻塞执行,适用于耗时任务如网络请求。常见异步方式包括定时器、接口调用、事件监听。

or...of 和 for...in 是 JavaScript 中的两种循环语句。
for...of 循环遍历可迭代对象(例如数组)的值。
for...in 循环遍历对象的属性。
因此,for...of 适用于遍历数组中的值,而 for...in 适用于遍历对象的属性。
在使用 for...of 和 for...in 循环时,可以使用 break 和 continue 语句来控制循环的流程。
在使用 for...in 循环时,应注意遍历的是对象的所有可枚举属性,包括它的继承链中的属性。因此,如果对象继承了一些不希望遍历的属性,可以使用 hasOwnProperty 方法来检查该属性是否为对象本身的属性:
for...in 循环的迭代顺序是不确定的,因此如果希望按照特定顺序遍历对象的属性,可以使用 Object.keys 方法将对象的属性名组成的数组传递给 for...of 循环。
什么是同步异步
在 JavaScript 中,同步和异步指的是程序的执行方式。
JavaScript 是单线程语言,意味着它只能在一个时间点上执行一个任务。如果遇到耗时较长或涉及网络通信的任务,如果使用同步方式执行,程序就会停止执行,直到任务完成,这显然不是理想的方案。
因此,JavaScript 中的异步编程就应运而生。异步编程的核心思想是使用回调函数或事件机制,将耗时较长的任务交给浏览器或系统执行,JavaScript 程序在等待任务完成时继续执行,在任务完成时调用回调函数或触发事件通知程序进行下一步操作。
例如,在 JavaScript 中使用 XMLHttpRequest 对象发送网络请求时,可以设置回调函数或事件处理器来处理服务器响应,这样 JavaScript 程序就可以在等待服务器响应时继续执行,在服务器响应到达时再调用回调函数或触发事件进行处理。

常见的异步方式:
①定时器,setTimeout,setInterval
②接口调用,axios.get() , axios.post(), axios({}),node中的 readFile(),writeFile()
③事件函数, dom.addEventLister("click",function(){}

相关文章
|
5月前
|
设计模式 前端开发 JavaScript
MVVM的理解:
MVVM的理解:
402 0
|
JavaScript 前端开发
解释 JavaScript 中的`map()`、`filter()`和`reduce()`方法的用途。
解释 JavaScript 中的`map()`、`filter()`和`reduce()`方法的用途。
277 1
|
前端开发 JavaScript
【JavaScript原型链prototype详解】
在JavaScript中,每个对象都有一个原型(prototype)属性,它指向另一个对象。这个被指向的对象也有自己的原型,以此类推,最终形成了一个原型链。原型链的顶端是Object.prototype,它是所有对象的根原型。 当我们访问一个对象的属性时,如果该对象自身没有这个属性,JavaScript会沿着原型链向上查找,直到找到匹配的属性或者到达原型链的末端。
401 0
【JavaScript原型链prototype详解】
|
小程序
UniAPP 目录结构详细介绍(及条件编译文件夹详解)
UniAPP 目录结构详细介绍(及条件编译文件夹详解)
1665 1
|
Java Spring
动态控制 Spring Boot 中的 @Scheduled 定时任务
Spring Boot 中的 @Scheduled 注解为定时任务提供了一种很简单的实现,只需要在注解中加上一些属性,例如 fixedRate、fixedDelay、cron(最常用)等等,并且在启动类上面加上 @EnableScheduling 注解,就可以启动一个定时任务了。 但是在某些情况下,并没有这么简单,例如项目部署上线之后,我们可能会修改定时任务的执行时间,并且停止、重启定时任务等,因为定时任务是直接写死在程序中的,修改起来不是非常的方便。所以,简单记录一下自己的一些解决方案,仅供参考。
2529 0
|
5月前
|
存储 JavaScript 前端开发
JS的数据类型,储存上的差距
JavaScript 中的数据类型分为基本类型和引用类型,存储方式和占用空间不同。基本类型包括布尔值、数字、字符串、null 和 undefined,占用空间小;引用类型如对象、数组和函数则占用更多空间。合理选择数据类型可优化程序性能。
118 0
JS的数据类型,储存上的差距
|
5月前
|
JavaScript 前端开发
forEach与map的区别
forEach与map的区别
310 0
EMQ
|
JSON Linux 网络性能优化
MQTT 5.0 报文解析 02:PUBLISH 与 PUBACK
本文将介绍在 MQTT 中用于传递应用消息的 PUBLISH 报文以及它的响应报文。不管是客户端向服务端发布消息,还是服务端向订阅端转发消息,都需要使用 PUBLISH 报文。决定消息流向的主题、消息的实际内容和 QoS 等级,都包含在 PUBLISH 报文中。
EMQ
1028 85
MQTT 5.0 报文解析 02:PUBLISH 与 PUBACK
|
API
【threejs教程】threejs中的边边角角:几何体详解
【8月更文挑战第6天】threejs中的几何体详解
585 4
【threejs教程】threejs中的边边角角:几何体详解