最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小議JavaScript中Generator和Iterator的使用

 更新時間:2015年07月29日 10:53:27   投稿:goldensun  
這篇文章主要介紹了小議JavaScript中Generator和Iterator的使用,文中舉了一個簡單的示例來說明二者之間的配合,需要的朋友可以參考下

一說到 Generator,大家就會扯上異步之類是話題。這顯然是被一些奇奇怪怪的東西帶壞了。與 Generator 關(guān)系密切的應(yīng)該是 Iterator 才對,拿 Generator 來處理異步也許是一些 C# 程序員才會想的事。當然這種用法確實有一套完整的東西,只是我個人不喜歡而已。
  非要把 Generator 和異步聯(lián)系上,唯一的點就是 next 的調(diào)用時機。因為 next 可以異步地調(diào)用,所以 Generator 才得以被異步地濫用。
  但我覺得 next 這個方法雖然可以異步調(diào)用,但正確的使用方式應(yīng)該是同步的。至少當一個 Generator 實例被用于 for-of 循環(huán)或 [...obj] 解構(gòu)時都是連續(xù)調(diào)用 next 的。
  除了 next 的同異步問題外,next 的參數(shù)也是個問題。由于 next 調(diào)用時傳入的參數(shù)會被作為 yield 運算符的返回值,所以 generator 有了更豐富的使用方式。在早期的 python 中 yield 是語句而不是運算符,所以也不存在這樣的用法。后來的版本才把 yield 作為運算符,所以才出現(xiàn)了各種坑。
  把 Generator 實例作為 Iterator 時既不會異步調(diào)用 next,也不會給 next 傳入?yún)?shù)。我覺得這才是 Generator 的正確用法?;蛘哒f白了,Generator 就是用來實現(xiàn) Iterator 的。至少 Generator 這個名字沒有別的含義了。下面是一個用法示例:
運行

<script>
var match = function * (pattern, string) {
 var regexp = new RegExp(pattern, 'g'); 
 for(let i; i = regexp.exec(string); yield i);
};

for(let i of match('a', 'abcabcabc')) {
 console.log(i);
}
</script>

相關(guān)文章

  • 關(guān)于JavaScript對象類型之Array及Object

    關(guān)于JavaScript對象類型之Array及Object

    這篇文章主要介紹了關(guān)于JavaScript對象類型之Array及Object,Array 類型是 ECMAScript 中最常用的類型了。而且,ECMAScript 中的數(shù)組與其他多數(shù)語言中的數(shù)組有著相當大的區(qū)別,需要的朋友可以參考下
    2023-05-05
  • 深入了解javascript中的prototype與繼承

    深入了解javascript中的prototype與繼承

    本篇文章,小編將和大家一起深入了解javascript中的prototype與繼承,有需要的朋友可以參考一下
    2013-04-04
  • ES6基礎(chǔ)語法之數(shù)組拓展

    ES6基礎(chǔ)語法之數(shù)組拓展

    這篇文章介紹了ES6基礎(chǔ)語法之數(shù)組拓展,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • JavaScript從原型到原型鏈深入理解

    JavaScript從原型到原型鏈深入理解

    這篇文章主要介紹了從原型與原型鏈開始講起,如果你想知道構(gòu)造函數(shù)的實例的原型,原型的原型,原型的原型的原型是什么,就來看看這篇文章吧。下面小編就來帶大家一起學(xué)習一下
    2019-06-06
  • 關(guān)于jQuery參考實例2.0 用jQuery選擇元素

    關(guān)于jQuery參考實例2.0 用jQuery選擇元素

    本篇文章小編為大家介紹,關(guān)于jQuery參考實例2.0 用jQuery選擇元素,有需要的朋友可以參考一下。
    2013-04-04
  • 在JavaScript并非所有的一切都是對象

    在JavaScript并非所有的一切都是對象

    本篇文章解釋了 javascript 中的兩種值類型:原始值(primitive)和對象(object),以及混合使用兩種類型時的注意事項
    2013-04-04
  • JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊列

    JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊列

    在面向?qū)ο蟮某绦蛟O(shè)計里,一般都提供了實現(xiàn)隊列(queue)和堆棧(stack)的方法,而對于JS來說,我們可以實現(xiàn)數(shù)組的相關(guān)操作,來實現(xiàn)隊列和堆棧的功能,看下面的相關(guān)介紹.
    2016-01-01
  • 簡單了解JavaScript作用域

    簡單了解JavaScript作用域

    這篇文章主要介紹了JavaScript作用域的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習,感興趣的朋友可以了解下
    2020-07-07
  • JavaScript基礎(chǔ)知識學(xué)習筆記

    JavaScript基礎(chǔ)知識學(xué)習筆記

    本文是初學(xué)javascript的時候記的學(xué)習筆記,簡單介紹了javascript的定義及用法,并附上示例,適合初學(xué)者們,老鳥請出門左轉(zhuǎn)。
    2014-12-12
  • JavaScript中的Math 使用介紹

    JavaScript中的Math 使用介紹

    這篇文章主要介紹了JavaScript中Math的使用,需要的朋友可以參考下
    2014-04-04

最新評論

原平市| 高阳县| 红原县| 宁夏| 宜君县| 湖南省| 乐安县| 玉龙| 万盛区| 赤峰市| 芜湖市| 伊宁县| 墨江| 翼城县| 沾化县| 大同市| 定陶县| 荥阳市| 衡南县| 金塔县| 灵丘县| 当雄县| 黔东| 孝义市| 岳普湖县| 蒙阴县| 桃源县| 乌拉特中旗| 岱山县| 海阳市| 扬州市| 东辽县| 嘉兴市| 建平县| 康平县| 内丘县| 伽师县| 德州市| 库伦旗| 牙克石市| 吉林省|