国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:17:07
字體:
來源:轉載
供稿:網友

本文主要介紹了關于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            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 孝义市| 和顺县| 成都市| 神木县| 仪陇县| 广东省| 同德县| 沂水县| 兰坪| 巴彦淖尔市| 田林县| 花莲市| 阿拉善盟| 阳西县| 怀化市| 封丘县| 中方县| 龙胜| 于都县| 塘沽区| 古丈县| 孟村| 北安市| 彰化市| 进贤县| 深水埗区| 黄石市| 旺苍县| 邵武市| 德江县| 北川| 桓台县| 黄梅县| 绍兴县| 监利县| 巨鹿县| 枝江市| 安国市| 义乌市| 肥西县| 卓尼县|