摘要:舉個(gè)例子,如果你的數(shù)組中有一個(gè)可枚舉屬性,循環(huán)將額外執(zhí)行一次,遍歷到名為的索引。就連數(shù)組原型鏈上的屬性都能被訪問(wèn)到。最讓人震驚的是,在某些情況下,這段代碼可能按照隨機(jī)順序遍歷數(shù)組元素。
在學(xué)習(xí)ES6的變量解構(gòu)賦值的時(shí)候在demo中看到了for-of循環(huán),現(xiàn)在就來(lái)總結(jié)一下JS中的各種循環(huán)
首先我們先來(lái)看看最初的循環(huán)for(var i = 0;i這其實(shí)是用的最多的循環(huán)吧,如果是我我想也會(huì)首選這個(gè)循環(huán)的,因?yàn)楹芟牒蠖酥械膄or循環(huán)
但是我們要記住我們是前端工程師,我們應(yīng)該跟上時(shí)代變遷的腳步,在ES5的時(shí)代到來(lái)的時(shí)候我們應(yīng)該改進(jìn)我們的循環(huán)了
ES5中我們可以使用內(nèi)建forEach方法遍歷數(shù)組
myArrays.forEach(function(value){ console.log(value); })以上的代碼看上去是不是很簡(jiǎn)潔,但是它也有一個(gè)缺點(diǎn)的就是不能使用break退出循環(huán)或者return返回外層函數(shù)
那么我們?cè)倏纯磃or-in循環(huán)吧
for (var index in myArray) { // 千萬(wàn)別這樣做 console.log(myArray[index]); }在JS中for-in循環(huán)適用于對(duì)象的遍歷,而不適用于數(shù)組的遍歷
使用for-in循環(huán)數(shù)組在賦值的時(shí)候會(huì)賦值為字符串賦值
作用于數(shù)組的for-in循環(huán)體除了遍歷數(shù)組元素外,還會(huì)遍歷自定義屬性。舉個(gè)例子,如果你的數(shù)組中有一個(gè)可枚舉屬性myArray.name,循環(huán)將額外執(zhí)行一次,遍歷到名為“name”的索引。就連數(shù)組原型鏈上的屬性都能被訪問(wèn)到。
最讓人震驚的是,在某些情況下,這段代碼可能按照隨機(jī)順序遍歷數(shù)組元素。for-of循環(huán)來(lái)了
for (var value of myArray) { console.log(value); }這是最簡(jiǎn)潔遍歷數(shù)組的方法了
這個(gè)方法避開(kāi)了for-in缺陷
與forEach()不同的是,它可以正確響應(yīng)break、continue和return語(yǔ)句
for-of也是可以遍歷其他集合
例如nodeList遍歷,還可以遍歷字符串,將每個(gè)字符串視為Unicode字符遍歷
快快用起來(lái)吧!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80998.html
摘要:本文重點(diǎn)是講解如何解決循環(huán)依賴這個(gè)問(wèn)題。如何找到循環(huán)依賴的的文件上文的示例代碼很簡(jiǎn)單,個(gè)文件,很容易找出循環(huán)依賴。如果有十幾個(gè)文件,手工去找循環(huán)依賴的文件,也是非常麻煩的。 本文重點(diǎn)是講解如何解決循環(huán)依賴這個(gè)問(wèn)題。關(guān)心這個(gè)問(wèn)題是如何產(chǎn)生的,可以自行谷歌。 如何重現(xiàn)這個(gè)問(wèn)題 // a.js const {sayB} = require(./b.js) sayB() function ...
摘要:的一大特點(diǎn)就是單線程,而這個(gè)線程中擁有唯一的一個(gè)事件循環(huán)。事件循環(huán)基本概念代碼的執(zhí)行過(guò)程中,除了依靠函數(shù)調(diào)用棧來(lái)搞定函數(shù)的執(zhí)行順序外,還依靠任務(wù)隊(duì)列來(lái)搞定另外一些代碼的執(zhí)行。之后全局上下文進(jìn)入函數(shù)調(diào)用棧。 JavaScript的一大特點(diǎn)就是單線程,而這個(gè)線程中擁有唯一的一個(gè)事件循環(huán)。 事件循環(huán)基本概念 JavaScript代碼的執(zhí)行過(guò)程中,除了依靠函數(shù)調(diào)用棧來(lái)搞定函數(shù)的執(zhí)行順序外,還...
摘要:事件處理器,則是當(dāng)指定事件觸發(fā)時(shí),執(zhí)行的一段代碼。事件循環(huán)以一個(gè)無(wú)限循環(huán)的形式啟動(dòng),存在于二進(jìn)制文件里函數(shù)的最后,當(dāng)沒(méi)有更多可被執(zhí)行的事件處理器時(shí),它就退出。 前言 如果你了解過(guò)Node.js,那么你一定聽(tīng)說(shuō)過(guò)事件循環(huán)。你一定想知道它為什么那么特殊,并且為什么你需要關(guān)注它?此時(shí)此刻的你,可能已經(jīng)寫(xiě)過(guò)許多基于Express.js的后端代碼,但沒(méi)有接觸到任何的循環(huán)。 在下文中,我們會(huì)先在一...
摘要:異步請(qǐng)求線程在在連接后是通過(guò)瀏覽器新開(kāi)一個(gè)線程請(qǐng)求將檢測(cè)到狀態(tài)變更時(shí),如果設(shè)置有回調(diào)函數(shù),異步線程就產(chǎn)生狀態(tài)變更事件,將這個(gè)回調(diào)再放入事件循環(huán)隊(duì)列中。 基礎(chǔ):瀏覽器 -- 多進(jìn)程,每個(gè)tab頁(yè)獨(dú)立一個(gè)瀏覽器渲染進(jìn)程(瀏覽器內(nèi)核) 每個(gè)瀏覽器渲染進(jìn)程是多線程的,主要包括:GUI渲染線程 JS引擎線程 也稱為JS內(nèi)核,負(fù)責(zé)處理Javascript腳本程序。(例如V8引擎) JS引擎線程負(fù)...
摘要:檢索新的事件執(zhí)行與相關(guān)的回調(diào)幾乎所有,除了由定時(shí)器調(diào)度的一些和將在適當(dāng)?shù)臅r(shí)候在這里阻塞。在事件循環(huán)的每次運(yùn)行之間,檢查它是否在等待任何異步或定時(shí)器,如果沒(méi)有,則徹底關(guān)閉。 Node.js事件循環(huán)、定時(shí)器和process.nextTick() 什么是事件循環(huán)? 事件循環(huán)允許Node.js執(zhí)行非阻塞I/O操作 — 盡管JavaScript是單線程的 — 通過(guò)盡可能將操作卸載到系統(tǒng)內(nèi)核。 ...
摘要:輪詢投票處理下一次處理的新事件立即設(shè)置運(yùn)行通過(guò)注冊(cè)的所有回調(diào)關(guān)閉執(zhí)行所有的回調(diào)工作處理延遲此度量標(biāo)準(zhǔn)測(cè)量線程池處理異步任務(wù)需要多長(zhǎng)時(shí)間。高工作時(shí)間處理延遲表明繁忙耗盡的線程池。 原文=> What you should know to really understand the Node.js Event Loop Node.js 是一個(gè)基于事件的平臺(tái)。這就意味著在Node中發(fā)生的所...
閱讀 2997·2023-04-26 02:25
閱讀 2267·2023-04-25 18:05
閱讀 662·2021-09-30 09:57
閱讀 2955·2021-09-27 14:10
閱讀 1670·2019-08-30 15:44
閱讀 1016·2019-08-29 15:28
閱讀 2543·2019-08-29 14:10
閱讀 2272·2019-08-29 13:30