美文网首页
ES6 ES7 语法特性与规范

ES6 ES7 语法特性与规范

作者: NSWhoohoo | 来源:发表于2019-02-21 00:37 被阅读0次

    生成器函数

    说生成器之前先讲迭代器,下面就是迭代器的简单范例,迭代器代表一个流程,迭代器的每次next()调用,会返回迭代器流程现在的一个状态

    function makeIterator(arr) {
        let nextIndex = 0
    
        // 返回一个迭代器对象
        return {
            // next()返回的结果对象
            next: () => {
                if (nextIndex < arr.length) {
                    return {
                        value: arr[nextIndex++],
                        done: false
                    }
                } else {
                    return {
                        done: true
                    }
                }
            }
        }
    }
    
    const it = makeIterator(['1', '2', '3'])
    
    console.log(it.next().value)
    console.log(it.next().value)
    console.log(it.next().value)
    console.log(it.next().done)
    

    生成器语法上只是比普通function多一个*

    function *iterator(arr) {
        for (let i = 0; i < arr.length; i++) {
            yield arr[i]
        }
    }
    
    const gen = iterator(['1', '2', '3'])
    
    console.log(gen.next().value)
    console.log(gen.next().value)
    console.log(gen.next().value)
    console.log(gen.next().done)
    

    生成器大大简化了迭代器繁琐的写法

    相关文章

      网友评论

          本文标题:ES6 ES7 语法特性与规范

          本文链接:https://www.haomeiwen.com/subject/oiklyqtx.html