JavaScript使用生成器优雅实现计数器
JavaScript没有局部作用域的概念, 所以一个简单的计数器, 都需要写一个嵌套函数(外层函数负责存储变量, 内层函数负责计数逻辑)
- 实现代码:
function addNum(){ let result = 0; return function(num){ result = result+num; return result }}function main(){ let an = addNum(); console.log('第一次调用', an(10)); console.log('第二次调用', an(2000));}main()- 当然假如用迭代器和生成器也能实现, 而且看起来更优雅少量

'use strict';// 生成器函数function *addNum() { let result = 0; while(true){ // 第一步: 可以在yiled处获取10, // 第二步: 运算result+10, 运算结果10, 被赋值给result // 第三步: 通过语法`(yield result)`将10传递回迭代器 result = result + (yield result); }}function main() { // 创立迭代器an const an = addNum(); // 第一次调用next,可以让生成器函数运行到第一个yield的位置, 但不需要传参数(传了也没用) console.log('第一次调用迭代器(不传参数)返回的结果:', an.next().value); // 第二次调用next, 传入参数10, 通过`.value语法获取生成器返回的值` console.log('第二次调用迭代器(传入参数10)返回的结果:', an.next(10).value); // 第三次调用与第二次调用相似, 传入参数2000, 获取的生成器的返回值应为2010;(2010为第二次传入的10, 与第三次传入的2000,相加取得的结果) console.log('第三次调用迭代器(传入参数2000)返回的结果:',an.next(2000).value);}main()说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JavaScript使用生成器优雅实现计数器
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JavaScript使用生成器优雅实现计数器
