生成器是一种惰性的序列,它支持一边读取数据,一边生成数据,如果数据比较大时,这种机制能节省很多内容空间。JavaScript 在 ES6 标准中也新增了对生成器的支持。
/*
生成器的构造是用函数来包装,但是我们应该把下例看成是一个 [1,2,3,4,5] 的序列,而不是一个函数
*/
function* f() {
for (let i=0; i<5; i++){
yield i // 返回并记录函数状态
}
}
var f = f()
console.log(f.next()) // { value: 0, done: false }
console.log(f.next()) // { value: 1, done: false }
console.log(f.next()) // { value: 2, done: false }
console.log(f.next()) // { value: 3, done: false }
console.log(f.next()) // { value: 4, done: false }
console.log(f.next()) // { value: undefined, done: true }
/*
每调用一次 next,就执行一次 yield | 依靠这种需要才生产的工作机制,大大的节省资源
*/
JavaScript 数据类型
JavaScript 数字
JavaScript 字符串
JavaScript 数组
JavaScript 对象
JavaScript Map
JavaScript Set
JavaScript null
JavaScript undefined
JavaScript 类型检测
JavaScript 包装对象
JavaScript 函数
JavaScript 参数
JavaScript 匿名函数
JavaScript 箭头函数
JavaScript 递归
JavaScript 闭包
JavaScript 生成器
JavaScript 异步
JavaScript setTimeout
JavaScript setInterval
JavaScript 回调
JavaScript Promise
JavaScript async await