美文网首页
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