亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

ES6入門教程之Iterator與for...of循環詳解

2019-11-19 16:34:13
字體:
來源:轉載
供稿:網友

本文主要介紹了關于ES6中Iterator與for...of循環的相關內容,分享出來供大家參考學習,需要的朋友們下面來一起看看詳細的介紹:

一、Iterator(遍歷器)

遍歷器(Iterator)是一種協議,任何對象只要部署了這個協議,就可以完成遍歷操作。在ES6中遍歷操作特質for….of循環。

它的作用主要有兩個:

  • 為遍歷對象的屬性提供統一的接口。
  • 使對象的屬性能夠按次序排列。

ES6的遍歷器協議規定,部署了next方法的對象,就具備了遍歷器功能。next方法必須返回一個包含value和done兩個屬性的對象。value屬性是當前遍歷的位置的值,而done屬性是一個布爾值,用來表示遍歷是否結束。

 function makeIterator(array) {  var nextIndex = 0;  return {   next: function() {    return nextIndex < array.length ?     {value: array[nextIndex++], done: false} :     {value: undefined, done: true};   }  } } var it = makeIterator(['a', 'b']); it.next().value; //'a' it.next().value; //'b' it.next().done; // true

在上面代碼片段中,定義了一個makeIterator函數,它的作用是返回一個遍歷器對象,用來遍歷參數數組。特別需要注意的是next返回值的構造。

下面,再看看一個遍歷器的示例代碼片段:

 function idMaker() {  var index = 0;   return {   next: function() {    return {value: index++, done: false};   }   } } var it = idMaker(); it.next().value; //'0' it.next().value; //'1' it.next().value; //'2'

二、for…of 循環

在ES6中,一個對象只要部署了next方法,就被視為是具有了iterator接口,就可以用for…of循環遍歷它的值。

 function idMaker() {  var index = 0;  return {   next: function() {    return {value: index++, done: false};   }  } } for (var n of it) {  if (n > 5) {   break;   console.log( n );  } } //0 //1 //2 //3 //4 //5

上面的代碼說明,for….of默認從0開始循環。

數組原生具備iterator接口

 const arr = [1, 5, 3, 9]; for (let v of arr) {  console.log( v ); } //1 //5 //3 //9

相比較,Js原有的for…in循環,只能獲得對象的鍵名,不能直接獲取鍵值。ES6提供了for…of循環,允許遍歷獲取鍵值。

 var arr = ['a', 'b', 'c', 'd']; for (a in arr) {  console.log( a ); } //0 //1 //2 //3 for (a of arr) {  console.log( a ); } //0 //1 //2 //3

上面的代碼片段表明,for…in循環讀取鍵名,而for…of循環讀取鍵值。

對于Set和Map結構的數據,可以直接使用for…of循環。

 var name = ['S', 'D', 'J', 'Z', 'G', 'G', 'G']; for ( var e of name) {  console.log( e ); } //S //D //J //Z //G var es6 = new Map(); es6.set('edition', 6); es6.set('committee', 'TC39'); es6.set('standard', 'ECMA-262'); for(var [name, value] of es6) {   console.log(name + ": " + value); } // edition: 6 // commttee: TC39 // standard: ECMA-262

在上面的代碼片段中,演示了如何遍歷Set結構和Map結構,后者是同是遍歷鍵名和鍵值。

對于普通的對象,for...of結構不能直接使用,否則則會報錯。必須項部署iterator接口才能使用。但是,在這種情況下,for...in循環依然可以遍歷鍵名。

 var es6 = {  name: "G.Dragon",  year: 22,  love: "coding" }; for (e in es6) {  console.log( e ); } //name //year //love for( e of es6) {  console.log( e ); } // TypeError: es6 is not iterable

最后,總結一下。for...of循環可以使用的范圍包括數組、類似數組的而對象(比如argument對象、DOM NodeList對象)、Set和Map結構、后文的Generator對象,以及字符串。下面是使用for...of循環遍歷字符串和DOM NodeList對象的例子。

 // 字符串例子 let str = "hello"; for (let s of str) {  console.log( s ); } //h //e //l //l //o // DOM NodeList對象的例子 let paras = document.getSelectorAll("p"); for (let p of paras) {  p.classList.add("test"); }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩性生活视频| 亚洲精品欧美一区二区三区| 国产在线观看91精品一区| 精品国产视频在线| 日韩人在线观看| 欧美激情视频在线| 欧美黑人巨大xxx极品| 在线视频国产日韩| 久久亚洲精品毛片| 日韩欧美高清在线视频| 秋霞成人午夜鲁丝一区二区三区| 岛国av一区二区三区| 国产精品久久婷婷六月丁香| 成人午夜黄色影院| 成人免费看片视频| 国产精品老女人视频| 欧美激情图片区| 欧美精品免费在线| 久青草国产97香蕉在线视频| 欧美成人精品激情在线观看| 亚洲黄色成人网| 欧美日韩第一视频| 国产精品久久综合av爱欲tv| 国产精品激情av电影在线观看| 成人黄色在线免费| 国产精品一区二区久久国产| 奇米一区二区三区四区久久| 中文字幕一精品亚洲无线一区| 精品亚洲一区二区| 色综合色综合网色综合| 亚洲国产成人av在线| 亚洲欧美中文日韩在线v日本| 欧美日韩免费区域视频在线观看| 97久久超碰福利国产精品…| 久久久久成人精品| 欧美最猛性xxxxx免费| 国产中文字幕日韩| 欧美日韩精品在线视频| 亚洲国产欧美一区二区三区同亚洲| 久久99久久久久久久噜噜| 91精品美女在线| 欧美性xxxx极品hd满灌| 日韩中文在线不卡| 欧美性xxxxhd| 中文字幕亚洲一区二区三区| 欧美一级视频在线观看| 欧美性高跟鞋xxxxhd| 一区二区成人av| 亚洲精品一区av在线播放| 韩剧1988在线观看免费完整版| 国产成人精品综合| 日韩中文字幕在线精品| 欧美亚洲成人xxx| 欧美视频在线观看免费网址| 亚洲人成电影在线观看天堂色| 精品欧美国产一区二区三区| 成人美女av在线直播| 久久亚洲精品国产亚洲老地址| 日韩精品免费在线| 国产在线98福利播放视频| 欧美亚洲免费电影| 亚洲欧洲高清在线| 成人免费在线视频网站| 亚洲欧洲一区二区三区在线观看| 欧美影院成年免费版| 综合av色偷偷网| 中文字幕av一区| 国产精品999999| 亚洲女同性videos| 久久久之久亚州精品露出| 美女性感视频久久久| 欧美日韩999| 日韩精品中文字幕视频在线| 国产精品国内视频| 成人精品久久av网站| 久久视频免费观看| 国产精品视频在线观看| 欧美日韩国产精品专区| 69av视频在线播放| 亚洲一区中文字幕| 欧美日韩午夜视频在线观看| 91久久夜色精品国产网站| 日韩av一区在线观看| 91久久久国产精品| 亚洲已满18点击进入在线看片| 最新中文字幕亚洲| 欧美日本高清一区| 亚洲最大av在线| 欧美放荡办公室videos4k| 久青草国产97香蕉在线视频| 久久精品青青大伊人av| 亚洲一级免费视频| 97在线看免费观看视频在线观看| 国产热re99久久6国产精品| 国产成人一区二区三区| 亚洲自拍av在线| 日韩欧美极品在线观看| 国产精品久久久久久久久久| 狠狠躁夜夜躁人人爽天天天天97| 色噜噜狠狠色综合网图区| 日韩电影免费在线观看中文字幕| 久久九九国产精品怡红院| 91成品人片a无限观看| 欧美日本精品在线| 亚洲欧美精品一区二区| 成人美女免费网站视频| 国产精品久久不能| 久久久精品久久| 久久久天堂国产精品女人| 日韩视频免费在线观看| 欧美日韩一区二区在线播放| 91国产精品电影| 国模私拍视频一区| 最新中文字幕亚洲| 在线日韩av观看| 理论片在线不卡免费观看| 亚洲午夜未满十八勿入免费观看全集| 在线免费看av不卡| 欧美午夜视频在线观看| 亚洲小视频在线| 亚洲精品久久在线| 亚洲图片在线综合| 国产脚交av在线一区二区| 亚洲黄页视频免费观看| 一区二区成人av| 精品亚洲一区二区三区在线观看| 人妖精品videosex性欧美| 中文精品99久久国产香蕉| 91综合免费在线| 亚洲自拍偷拍一区| 国产精品国模在线| 欧美日韩在线观看视频小说| 日韩中文字幕视频| 在线不卡国产精品| 78色国产精品| 成人黄色免费看| 亚洲一区二区黄| 亚洲www在线| 久久久免费观看视频| 久久久久久久一| 国产精品免费观看在线| 69精品小视频| 亚洲精品资源美女情侣酒店| 亚洲欧美一区二区三区久久| 热re99久久精品国产66热| 国产精品入口日韩视频大尺度| 久久中文久久字幕| 亚洲欧美日韩久久久久久| 国产欧美一区二区白浆黑人| 精品在线小视频| 色综合久久中文字幕综合网小说| 欧美一级视频在线观看| 奇米一区二区三区四区久久| 国产精品99一区| 国产91在线高潮白浆在线观看| 亚洲r级在线观看| 中国日韩欧美久久久久久久久| 日本成熟性欧美| 欧美成人h版在线观看| 久久的精品视频| 久久影视电视剧凤归四时歌| 国产狼人综合免费视频| 久久成年人免费电影| 精品露脸国产偷人在视频|