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