ECMAScript 6入门 互动版

简介
什么是ES6? 支持 环境支持
变量与字符串
let let应用 const声明常量 是否包含字符串三种新方法 repeat()原字符串重复 模板字符串 标签模板 String.raw()
数值
值是否无穷,NaN 值是否整数 Math对象 Math 对数方法
数组
Array.from() Array.of() 数组实例的find()和findIndex() 数组实例的fill() 数组实例的entries(),keys()和values()
对象
属性的简洁表示法 属性名表达式 比较两个值是否严格相等 Object.assign() proto属性 Symbol类型 Proxy内置代理
函数
默认参数 rest参数 扩展运算符 箭头函数 函数绑定 尾调用优化
Set
基本用法 Set实例的属性 Set实例的方法 遍历操作 WeakSet
Map
Map结构的目的和基本用法 实例的属性和操作方法 遍历方法 WeakMap
Iterator(遍历器)和for..of
Iterator(遍历器)的概念 数据结构的默认Iterator接口 调用默认Iterator接口的场合 原生具备Iterator接口的数据结构 Iterator接口与Generator函数 遍历器的return(),throw() for...of循环
Generator
简介 next方法的参数 for...of循环 throw方法 yield*语句 作为对象属性的Generator函数
Promise
Promise的含义 基本用法 Promise实例添加状态改变时的回调函数 指定发生错误时的回调函数 Promise.all()方法 Promise.race()方法 Promise.resolve()方法 Promise.reject()方法 Generator函数与Promise的结合 async函数
Class
Class基本语法 Class的继承 class的取值函数(getter)和存值函数(setter) Class的Generator方法 Class的静态方法 new.target属性 修饰器-类的修饰1 修饰器-类的修饰2
Module
export命令 import命令 模块的整体输入 module命令 export default命令 模块的继承

简介

Generator函数是一个函数的内部状态的遍历器(也就是说,Generator函数是一个状态机)。

形式上,Generator函数是一个普通函数,但是有两个特征。

  • 一是,function命令与函数名之间有一个星号
  • 二是,函数体内部使用yield语句,定义遍历器的每个成员,即不同的内部状态。
function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}

var hw = helloWorldGenerator();
hw.next()
// { value: 'hello', done: false }

hw.next()
// { value: 'world', done: false }

hw.next()
// { value: 'ending', done: true }

hw.next()
// { value: undefined, done: true }

总结一下,调用Generator函数,返回一个部署了Iterator接口的遍历器对象,用来操作内部指针。以后,每次调用遍历器对象的next方法,就会返回一个有着valuedone两个属性的对象。value属性表示当前的内部状态的值,是yield语句后面那个表达式的值;done属性是一个布尔值,表示是否遍历结束。

请在右侧的环境中,按照上述示例定义Generator函数(helloHubwiz),通过yield定义成员hello,汇智网,调用helloHubwiz方法,并打印对象.next()。