ES6generator

<!DOCTYPE html>
<html>
<head>
<title>ES6 generator</title>
<script type="text/javascript">


//generator 解决异步嵌套问题
//语法
function * show(){
yield 'hello';
yield 'word';
return '测试';
}

let res=show();
// console.log(res);//这样输出的话,有些浏览器没有反应
//谷歌的话会输出一个show对象 输入如下 主要的是scopes 可以同 next()迭代他
// [[GeneratorStatus]]:"suspended"
// [[GeneratorFunction]]:ƒ * show()
// [[GeneratorReceiver]]:Window
// [[GeneratorLocation]]:generator.html:8
// [[Scopes]]:Scopes[3]
//console.log(res.next());//输出结果{value: "hello", done: false} done:false说明还有后续元素

//do...while
let val;
do{
val=res.next()
console.log(val)
}while(!val.done)

//while
// let val=res.next();
// console.log(val);
// while(!val.done)
// {
// val=res.next();
// console.log(val);
// }

//for of //迭代有迭代器的,比如说数组集合之类的,
// for(let val of res)
// {
// console.log(val);
// }

//for in //根据 属性名(key)迭代
// for(let val of res)
// {
// console.log(val);
// }

// Array、Object、Set、Map四种数据结构中for、for in和for of循环的区别?
// 一、普通for循环在Array和Object中都可以使用。
// 二、for in在Array和Object中都可以使用。// 注意:在对象中包含原型上的属性。
// 三、for of在Array、Object、Set、Map中都可以使用。
// 四、forEach循环在Array、Set、Map中都可以使用。

//generator返回结果直接解构
function * show1(){
yield 'hello';
yield 'word';
return '测试';
}

</script>
</head>
<body>

</body>
</html>

原文地址:https://www.cnblogs.com/bigfire/p/9518241.html