摘要:举个例子,如果你的数组中有一个可枚举属性,循环将额外执行一次,遍历到名为的索引。就连数组原型链上的属性都能被访问到。最让人震惊的是,在某些情况下,这段代码可能按照随机顺序遍历数组元素。
在学习ES6的变量解构赋值的时候在demo中看到了for-of循环,现在就来总结一下JS中的各种循环
首先我们先来看看最初的循环for(var i = 0;i这其实是用的最多的循环吧,如果是我我想也会首选这个循环的,因为很想后端中的for循环
但是我们要记住我们是前端工程师,我们应该跟上时代变迁的脚步,在ES5的时代到来的时候我们应该改进我们的循环了
ES5中我们可以使用内建forEach方法遍历数组
myArrays.forEach(function(value){ console.log(value); })以上的代码看上去是不是很简洁,但是它也有一个缺点的就是不能使用break退出循环或者return返回外层函数
那么我们再看看for-in循环吧
for (var index in myArray) { // 千万别这样做 console.log(myArray[index]); }在JS中for-in循环适用于对象的遍历,而不适用于数组的遍历
使用for-in循环数组在赋值的时候会赋值为字符串赋值
作用于数组的for-in循环体除了遍历数组元素外,还会遍历自定义属性。举个例子,如果你的数组中有一个可枚举属性myArray.name,循环将额外执行一次,遍历到名为“name”的索引。就连数组原型链上的属性都能被访问到。
最让人震惊的是,在某些情况下,这段代码可能按照随机顺序遍历数组元素。for-of循环来了
for (var value of myArray) { console.log(value); }这是最简洁遍历数组的方法了
这个方法避开了for-in缺陷
与forEach()不同的是,它可以正确响应break、continue和return语句
for-of也是可以遍历其他集合
例如nodeList遍历,还可以遍历字符串,将每个字符串视为Unicode字符遍历
快快用起来吧!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/80998.html
摘要:本文重点是讲解如何解决循环依赖这个问题。如何找到循环依赖的的文件上文的示例代码很简单,个文件,很容易找出循环依赖。如果有十几个文件,手工去找循环依赖的文件,也是非常麻烦的。 本文重点是讲解如何解决循环依赖这个问题。关心这个问题是如何产生的,可以自行谷歌。 如何重现这个问题 // a.js const {sayB} = require(./b.js) sayB() function ...
摘要:的一大特点就是单线程,而这个线程中拥有唯一的一个事件循环。事件循环基本概念代码的执行过程中,除了依靠函数调用栈来搞定函数的执行顺序外,还依靠任务队列来搞定另外一些代码的执行。之后全局上下文进入函数调用栈。 JavaScript的一大特点就是单线程,而这个线程中拥有唯一的一个事件循环。 事件循环基本概念 JavaScript代码的执行过程中,除了依靠函数调用栈来搞定函数的执行顺序外,还...
摘要:事件处理器,则是当指定事件触发时,执行的一段代码。事件循环以一个无限循环的形式启动,存在于二进制文件里函数的最后,当没有更多可被执行的事件处理器时,它就退出。 前言 如果你了解过Node.js,那么你一定听说过事件循环。你一定想知道它为什么那么特殊,并且为什么你需要关注它?此时此刻的你,可能已经写过许多基于Express.js的后端代码,但没有接触到任何的循环。 在下文中,我们会先在一...
摘要:异步请求线程在在连接后是通过浏览器新开一个线程请求将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入事件循环队列中。 基础:浏览器 -- 多进程,每个tab页独立一个浏览器渲染进程(浏览器内核) 每个浏览器渲染进程是多线程的,主要包括:GUI渲染线程 JS引擎线程 也称为JS内核,负责处理Javascript脚本程序。(例如V8引擎) JS引擎线程负...
摘要:检索新的事件执行与相关的回调几乎所有,除了由定时器调度的一些和将在适当的时候在这里阻塞。在事件循环的每次运行之间,检查它是否在等待任何异步或定时器,如果没有,则彻底关闭。 Node.js事件循环、定时器和process.nextTick() 什么是事件循环? 事件循环允许Node.js执行非阻塞I/O操作 — 尽管JavaScript是单线程的 — 通过尽可能将操作卸载到系统内核。 ...
摘要:轮询投票处理下一次处理的新事件立即设置运行通过注册的所有回调关闭执行所有的回调工作处理延迟此度量标准测量线程池处理异步任务需要多长时间。高工作时间处理延迟表明繁忙耗尽的线程池。 原文=> What you should know to really understand the Node.js Event Loop Node.js 是一个基于事件的平台。这就意味着在Node中发生的所...
阅读 2932·2023-04-26 02:25
阅读 2178·2023-04-25 18:05
阅读 588·2021-09-30 09:57
阅读 2844·2021-09-27 14:10
阅读 1587·2019-08-30 15:44
阅读 940·2019-08-29 15:28
阅读 2500·2019-08-29 14:10
阅读 2205·2019-08-29 13:30