ES6新增数据类型:

Symbol 使用情况一般

用 typeof 检测出来的类型是: symbol

注意:

1.Symbol不能new出来
2.Symbol()返回的是一个唯一的值

使用可以做一个key,定义一些唯一或者私有的一些东西
3.symbol 是一个单独的数据类型,就叫symbol,属于基本数据类型
4.如果symbol作为key,用 for in 循环,出不来

Symbol的定义和使用

<script >let syml = Symbol('aaa');console.log(syml);console.log(typeof syml);
</script>

Symbol可用于json中:

<script >let symbol = Symbol('kirin');let json = {a: 'apple',b: 'banana',[symbol]: 'aaa'};console.log(json['a']);console.log(json[symbol]);console.log("split---");for (let item in json) {console.log(item);}
</script>

箭头函数:

<script >()=>{}
</script>

generator 函数:生成器

是为了解决异步深度嵌套的问题

generator函数语法:

<script >
function * show() {//只能配合generator函数来使用yield
}
//如:
function* gen() {yield 'welcome';yield 'to';yield 'school';+}
</script>
  • 调用:
<script >function* gen() {yield 'welcome';yield 'to';return 'school';-}let g1 = gen();console.log(g1.next()); // {value: "welcome", done: false} value:值 , done:后面是否为空console.log(g1.next());console.log(g1.next());// 此时返回的是最后一个,done:true
</script>

上述调用为手动调用

  • for…of…自动便利generator,但是不会遍历到generator,如:
<script >function* gen() {yield 'welcome';yield 'to';return 'school';}let g1 = gen();for (let val of g1) {// 此时不会输出return的东西console.log(val);}
</script>

还可以使用解构赋值(它解构并不会解构return的东西),如:

<script >function* gen() {yield 'welcome';yield 'to';return 'school';}let [a, b] = gen();console.log(a, b);
</script>

或者配合解构:

<script >function* gen() {yield 'welcome';yield 'to';yield '51.cnm';return 'school';}let [a, ...b] = gen();console.log(a, b);
</script>

或者使用扩展运算符:

<script >function* gen() {yield 'welcome';yield 'to';yield '51.cnm';return 'school';}console.log(...gen());
</script>

也可以配合Array.from()来使用:

<script >function* gen() {yield 'welcome';yield 'to';yield '51.cnm';return 'school';}console.log(Array.from(gen()));
</script>

异步:不连续,上一个操作没有执行完,下一个操作照样开始

同步:连续执行,上一个操作没有执行完,下一个没法开始

关于异步的解决方案:

回调函数

事件监听

发布/订阅

Promise对象


<script >async function fn() {let result=await xxx; //表示后面结果需要等待}
</script>

补充:async特点:

1.await只能放到async函数

2.相比generator语义化更强了

3.await后面可以是promise对象,也可以是数字,字符串等等

4.async返回的是promise对象

5.只要await语句后面promise状态变成一个reject时,整个async函数就会中断执行,如:

<script >async function fn() {throw new Error('Error出错了');}fn().then(res=>{console.log(res)},err=>{console.log(err);})
</script>

async函数中解决抛错:影响后续代码:使用try{}catch(){}
推荐在任何有await的地方,都用try,catch

ES6_symbol和generator_note相关推荐

最新文章

  1. 计算机系统的分类补充完整,数据库系统原(理B)13春A卷.doc
  2. java.lang.UnsatisfiedLinkError
  3. 沪江基于容器编排的Dev/Ops流程
  4. printf函数输出详解
  5. Spring Boot 使用Redis
  6. 微信小程序注册/登录接口开发
  7. 王琪你计算机学院,计算机学院“计忆时光”2019元旦联欢会暨年度颁奖典礼圆满举行...
  8. python遵循什么协议_《Python网络爬虫》2.3 Robots协议的遵守方式
  9. 浏览文件服务器,浏览文件服务器
  10. 51Nod-1062 序列中最大的数【序列计算+打表】
  11. python爬虫 书籍 外文_Python爬虫——WuXiaWorld英文版小说
  12. 如何将c语言转成汇编语言,如何把汇编语言转换成C语言
  13. spline: 计算机曲线简史(转载)
  14. rj45插座尺寸图_详细介绍RJ45模块(附图解)
  15. 【Javafx】关于属性绑定需要在动画设置之后
  16. 百度掉队了?正好相反,未来掉队的或许是腾讯阿里
  17. JDBC连接数据库遇到的“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。”问题解决方法
  18. 前端工程师必备:前端的模块化
  19. 多元线性回归及案例(Python)
  20. C++:实现一些简单的方法来 布莱克-斯科尔斯期权估值理论(附完整源码)

热门文章

  1. IOS UI UITableView
  2. [JS] - onmusewheel事件(兼容IE,FF)
  3. matlab利用双目图像视差进行三维重建
  4. oopc——8.经典案例1-rt thread
  5. Java基础——枚举类的使用教程
  6. C语言课后习题(43)
  7. 数据3分钟丨《个人信息保护法》将施行;2021全球分布式云大会将在沪召开;GaussDB取得“双第一”...
  8. 聚焦openEuler Summit,解锁云原生、开源等领域的实践干货
  9. 一种数据库打天下?开源数据库选型应该注意什么?
  10. 超融合硬件损坏导致Oracle RAC异常恢复实录