ES6深入浅出-4 迭代器与生成器-2.Symbol 和迭代器
symbol
https://zhuanlan.zhihu.com/p/22652486
Es5中的数据类型,所有的复杂类型都是对象类型。
ES6里面增加了symbol类型,用处不多。
https://zhuanlan.zhihu.com/p/22652486
这段代码实际上不优化也完全没有问题
也可以这么写,这样写不容易出错。
比如说有人把单词拼错了那么就什么也没有创建。
这样写直接就报错
以上两种写法哪一种好,就看哪一种写法更不容易出错。字符串的形式,如果拼错了,不容易监测出来。
神族、人族、虫族后面的值换成123 也是可以的。得出的结论是:神族、人族、虫族后面的值一点意思都没有。 根本就没有必要给它一个值。
只要神族、人族、虫族 不相等就可以了。所以我们就没必要想它的值是多少。
神族、人族、虫族都赋值为一个Symbol类型
Symbol上就是创造出一个独一无二的值。Symbol就是一个标志。可以理解为人族的胎记,这是独一无二的
迭代器
这是遍历的意思。
迭代。相当于生了一次级。
我们并不知道zhihu有多少个版本。zhihu甚至自己都不知道自己有多少个版本
迭代是有没有下一个版本,如果有你就给我,没有就结束
每调用一个发布的方法,version就+1,每次调用就会返回下一个版本。
调用一次发布器方法,用a接收,请问a的值是什么?
a是一个对象,这个对象有两个属性,分别是next和done。这是迭代的第一步。
next是下一次版本的入口,done就是我有没有下一个版本。
next和done现在都是unfined
开始改造
把next换成一个函数
现在只有一个next
如果我现在调用这个a.next() 什么也没有返回,因为这个函数现在什么也没有做。
让函数做点东西
在函数里面再返回一个函数
如果运行a.next() 。它是一个对象。
函数对象,函数对象。
每次调用next的时候_value就会加1作为value返回给你
调用a.next最终返回value为1的对象。
再调用一次a.next方法,value的值变成了2
这就是一个差一点就做完的迭代器
多返回一个done
最大值为10.加到10了 就停止迭代。done为true 否则done为false
没有被阻止,还是继续加了1
大于最大值就抛出错误。
迭代器的概念。
讲迭代器为了下面的生成器。
ES6深入浅出-4 迭代器与生成器-2.Symbol 和迭代器的更多相关文章
- python迭代器、生成器、装饰器之迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式. 一般分为可迭代对象,迭代器,可迭代对象不一定是迭代器,但迭代器一定是可迭代对象 1.可以直接作用于for循环的数据类型 第一类:集合数据 ...
- ES6深入浅出_汇总贴
H:\BaiDu\ES6深入浅出-wjw ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let https:/ ...
- 15.python的for循环与迭代器、生成器
在前面学习讲完while循环之后,现在终于要将for循环这个坑填上了.之所以拖到现在是因为for循环对前面讲过的序列.字典.集合都是有效的,讲完前面的内容再来讲for循环会更加容易上手. 首先,for ...
- Python: 迭代器与生成器小结
迭代器与生成器的区别: 1. 迭代器由Class对象创建. 生成器由包含yield表达的Function对象或者Generator Expression创建. 2. 迭代器的原理: (1)由Itera ...
- Python编程四大神兽:迭代器、生成器、闭包和装饰器
生成器 生成器是生成一个值的特殊函数,它具有这样一个特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序 ...
- python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器
1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 == 比较的是两个对象的内容是否相等 2. with语句时用于对try except finally 的优 ...
- Python核心编程的四大神兽:迭代器、生成器、闭包以及装饰器
生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程 ...
- 一文搞懂Python迭代器和生成器
很多童鞋搞不懂python迭代器和生成器到底是什么?它们之间又有什么样的关系? 这篇文章就是要用最简单的方式让你理解Python迭代器和生成器! 1.迭代器和迭代过程 维基百科解释道: 在Python ...
- Python3 迭代器与生成器 - 学习笔记
可迭代对象(Iterable) 迭代器(Iterator) 定义 迭代器和可迭代对象的区别 创建一个迭代器 创建一个迭代器类 使用内置iter()函数 StopIteration异常 生成器(gene ...
随机推荐
- 【测试用例工具】TestLink教程:一份完整指南(转)
转自:https://blog.csdn.net/cjtxzg/article/details/80498226 TestLink教程:一份完整指南1 TestLink的优点 登录到TestLink ...
- vue路由机制导致的坑,坑,坑
实现一个手机定位的功能: 跳转到指定页面的时候,安卓手机地图定位正常,苹果手机第一次进入页面,地图定位不准, 要刷新后,才可以准确定位,后来无意间不用路由跳转,使用JS跳转,完美解决, 特此记录,方便 ...
- [Svelte 3] Use Svelte 3 transitions to gracefully show and hide DOM elements
Most websites are quite static and adding some animations/transitions can improve the user experienc ...
- Canvas 总结,到第4章 canvas图形变换
canvas 必须认识到的大坑 <!-- 重点: 在js/canvas标签中定义的宽和高是画布实际的宽和高. 在样式表中定义的宽和高是画布缩放后的宽和高. 即:把js/canvas实际大小缩放到 ...
- Linux系统性能10条命令
概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat - ...
- WARNING: You are using pip version 19.1.1, however version 19.2.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
pip3 install --upgrade pip
- linux管道pipe详解
linux管道pipe详解 https://blog.csdn.net/qq_42914528/article/details/82023408
- Mac OS 上安装 PostgreSQL
PostgreSQL Database Download https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 下载 ...
- spark的一些基本概念和模型
Application application和Hadoop MapReduce类似,都是指用户编写的spark应用程序,其中包含了一个driver功能的代码和分布在集群中多个节点运行的executo ...
- ICEM-气化炉
原视频下载地址:https://yunpan.cn/cuPJWRHUJKXIL 访问密码 d379