摘要:如果你了解過,那么你應該對比較熟悉了,但是你知道背后的原理是什么么嗎首先調用集合的方法,緊接著返回一個新的迭代器對象。迭代器對象可以是任意具有方法的對象循環將重復調用這個方法,每次循環調用一次。
如果你了解過ES6,那么你應該對for...of比較熟悉了,但是你知道for...of背后的原理是什么么嗎?
for...of首先調用集合的[Symbol.Iterator]()方法,緊接著返回一個新的迭代器對象。迭代器對象可以是任意具有.next()方法的對象;for ...of循環將重復調用這個方法,每次循環調用一次。舉個例子,下面是最簡單的迭代器:
var zerosForeverIterator={ [Symbol.iterator]:function(){ return this; }, next:function(){ return {done:false,value:0}; } }
我們可以寫一個簡單的for...of循環然后按照下面的方法調用重寫被迭代的對象:
首先是for...of循環:
for(VAR of ITERABLE){ //一些語句 }
然后是一個使用以下方法和少許臨時變量實現的與之前大致相當的示例:
var $iterator=ITERABLE[Symbol.iterator()]; var $result=$iterator.next(); while(!$result.done){ vAR=$result.value; //一些語句 $result=$iterator.next(); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81063.html
摘要:但是有了尾調用優化之后,遞歸函數的性能有了提升。常被用來檢查對象中是否存在某個鍵名,集合常被用來獲取已存的信息。循環解構對象本身不支持迭代,但是我們可以自己添加一個生成器,返回一個,的迭代器,然后使用循環解構和。 一、let和const 在JavaScript中咱們以前主要用關鍵var來定義變量,ES6之后,新增了定義變量的兩個關鍵字,分別是let和const。對于變量來說,在ES5中...
摘要:迭代器模式順序訪問一個對象的對象的內部可分為內部迭代器和外部迭代器內部迭代器就是常見的或者外部迭代器實現了簡單實現 迭代器模式 順序訪問一個對象的 對象的內部 可分為內部迭代器 和 外部迭代器 內部迭代器 就是常見的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...
摘要:迭代器是一種特殊對象,每一個迭代器對象都有一個,該方法返回一個對象,包括和屬性。默認情況下定義的對象是不可迭代的,但是可以通過創建迭代器。在迭代器中拋出錯誤不再執行生成器返回語句生成器中添加表示退出操作。迭代器是一個對象。 迭代器(Iterator) ES5實現迭代器 迭代器是什么?遇到這種新的概念,莫慌張。 迭代器是一種特殊對象,每一個迭代器對象都有一個next(),該方法返回一個對...
閱讀 1697·2021-10-09 09:44
閱讀 3263·2021-09-27 13:36
閱讀 1520·2021-09-22 15:33
閱讀 1274·2021-09-22 15:23
閱讀 1159·2021-09-06 15:02
閱讀 1695·2019-08-29 16:14
閱讀 2901·2019-08-29 15:26
閱讀 2408·2019-08-28 18:08