真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ES6中Iterator與for...of循環(huán)的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“ES6中Iterator與for...of循環(huán)的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“ES6中Iterator與for...of循環(huán)的示例分析”這篇文章吧。

目前創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、彰武網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、Iterator(遍歷器)

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

它的作用主要有兩個(gè):

  • 為遍歷對(duì)象的屬性提供統(tǒng)一的接口。

  • 使對(duì)象的屬性能夠按次序排列。

ES6的遍歷器協(xié)議規(guī)定,部署了next方法的對(duì)象,就具備了遍歷器功能。next方法必須返回一個(gè)包含value和done兩個(gè)屬性的對(duì)象。value屬性是當(dāng)前遍歷的位置的值,而done屬性是一個(gè)布爾值,用來表示遍歷是否結(jié)束。

 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

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

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

 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 循環(huán)

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

 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默認(rèn)從0開始循環(huán)。

數(shù)組原生具備iterator接口

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

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

 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循環(huán)讀取鍵名,而for…of循環(huán)讀取鍵值。

對(duì)于Set和Map結(jié)構(gòu)的數(shù)據(jù),可以直接使用for…of循環(huán)。

 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結(jié)構(gòu)和Map結(jié)構(gòu),后者是同是遍歷鍵名和鍵值。

對(duì)于普通的對(duì)象,for...of結(jié)構(gòu)不能直接使用,否則則會(huì)報(bào)錯(cuò)。必須項(xiàng)部署iterator接口才能使用。但是,在這種情況下,for...in循環(huán)依然可以遍歷鍵名。

 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

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

 // 字符串例子
 let str = "hello";

 for (let s of str) {
  console.log( s );
 }
 //h
 //e
 //l
 //l
 //o

 // DOM NodeList對(duì)象的例子
 let paras = document.getSelectorAll("p");
 for (let p of paras) {
  p.classList.add("test");
 }

以上是“ES6中Iterator與for...of循環(huán)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前題目:ES6中Iterator與for...of循環(huán)的示例分析-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/cscghc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部