第一步
实现一个手写的genator 函数
/**
* 第一步
* @description 实现一个手写的genator 函数
* */
// 测试的generator函数
function* test() {
var a = 1;
yield a;
let b = 2;
return a
}
// babel 对 generator code split(草鞋版)
function splitIterator(fx) {
let code = fx.toString().match(/{(.|\s)*}/g)[0].slice(1, -1);
// 从代码中提取变量,变量提升
let variable = code.match(/let(\s*).|var(\s*).|const(\s*).*/g).join(";");
// 移除主体代码中的变量声明
let rmCodeVeriable = code.replace(/let|var|const/g, '');
// 替换yield为return,按照yield切片
let mainCode = rmCodeVeriable.match(/(.|\s)*?(yield|return).*/g)