js 迭代器

迭代器:迭代器是一个对象,这个对象允许对它的值集合进行遍历,并保持任何必要的状态以便能够跟踪到当前遍历的位置。

当迭代器用于有限的集合时,当遍历完所有的值并且没有多余的值可迭代时,在调用next()方法会抛出StopIteration

生成器

任何使用关键字yield的函数都称为“生成器函数”。生成器函数通过yield返回值。这些函数中可以使用return来终止函数的执行而不带任何返回值,但不能通过return来返回一个值。对生成器函数的调用和普通函数完全不同,不是执行生成器函数的函数体,而是返回一个生成器对象。生成器是一个对象,用以表示生成器函数的当前执行状态。

关键字yield用法和return类似,返回函数中的一个值。区别在于使用yield的函数产生一个可保持函数内部状态的值,这个值是可以恢复的。

生成器经常用来处理序列化的数据,比如元素列表、多行文本、词法分析器中的单词等。

数组推导

它是一种利用另外一个数组可迭代对象来初始化数组元素的技术。

数组推导包含三个部分:

1.一个没有循环体的for/in或for/each循环。包括一个变量(或者通过解构赋值得到的多个变量)在in左侧,右侧是对象(这个对象可以是一个生成器、可迭代对象或数组)

2.执行遍历的对象之后,是圆括号中的关键字if 和条件表达式,目前,这个条件表达式只是用做过滤器的值。每次for循环产生一个值之后会判断条件表达式。

3.在关键字for之前是expression,可以认为这个表达式是循环体。

生成器表达式:将数组推导的方括号替换成圆括号,就成了一个生成器表达式。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值