尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
副队长JavaScript教程(41)-函数的应用案例
点此查看所有教程、项目、源码导航文章目录1. 背景2. 案例实现思路3. 代码实现4. 运行输出5. 重点拆解里面的核心知识点6. 拓展思考可以自己尝试改造7. 小结1. 背景前面我们已经把函数的基础知识点全部学完定义调用、参数、返回值、作用域、匿名函数、函数表达式。上一篇的小案例偏向单一功能比较简单。本篇我们做一个更贴近真实开发的综合案例把判断、循环、分支、多个函数互相调用、局部作用域全部融合在一起。需求说明我们封装一组学生成绩工具函数实现这些能力计算一组成绩的平均分找出一组成绩里的最高分、最低分统计及格人数大于等于 60 分为及格根据平均分自动评定等级90 及以上优秀80~89 良好70~79 中等60~69 及格60 以下不及格我们把每一个独立能力单独封装成函数最后写一个总函数一次性输出整套统计结果。2. 案例实现思路遵循一个原则一个函数只负责一件事。getAverage接收成绩数组返回平均分getMaxScore接收成绩数组返回最高分getMinScore接收成绩数组返回最低分getPassCount接收成绩数组返回及格人数getLevel接收平均分返回评价等级showScoreInfo总函数调用上面所有工具函数统一打印全部统计信息3. 代码实现// 计算平均分functiongetAverage(scoreArr){letsum0;for(leti0;iscoreArr.length;i){sumsumscoreArr[i];}letavgsum/scoreArr.length;returnavg;}// 获取最高分functiongetMaxScore(scoreArr){letmaxscoreArr[0];for(leti1;iscoreArr.length;i){if(scoreArr[i]max){maxscoreArr[i];}}returnmax;}// 获取最低分functiongetMinScore(scoreArr){letminscoreArr[0];for(leti1;iscoreArr.length;i){if(scoreArr[i]min){minscoreArr[i];}}returnmin;}// 统计及格人数functiongetPassCount(scoreArr){letcount0;for(leti0;iscoreArr.length;i){if(scoreArr[i]60){count;}}returncount;}// 根据平均分获取等级functiongetLevel(avg){if(avg90){return优秀;}elseif(avg80){return良好;}elseif(avg70){return中等;}elseif(avg60){return及格;}else{return不及格;}}// 汇总函数一次性统计全部信息functionshowScoreInfo(scoreList){// 内部局部变量只在这个函数内可用letaveragegetAverage(scoreList);letmaxgetMaxScore(scoreList);letmingetMinScore(scoreList);letpassNumgetPassCount(scoreList);letlevelgetLevel(average);console.log(成绩统计报告);console.log(平均分average);console.log(最高分max);console.log(最低分min);console.log(及格人数passNum);console.log(整体等级level);}// 测试两组不同班级的成绩letclass1[88,76,59,92,66,45,79,95];letclass2[55,48,62,71,53];showScoreInfo(class1);showScoreInfo(class2);4. 运行输出成绩统计报告平均分75最高分95最低分45及格人数6整体等级中等成绩统计报告平均分57.8最高分71最低分48及格人数2整体等级不及格5. 重点拆解里面的核心知识点函数之间互相调用showScoreInfo这个汇总函数内部调用了我们前面写好的多个工具函数。这就是函数复用的魅力不用反复抄写循环和判断代码。局部变量的使用average、max、min这些变量是定义在showScoreInfo里面的局部变量只能在这个函数内部使用外部访问不到不会污染全局。同一个工具函数可以传入多组不同数据我们传入了 class1、class2 两组成绩复用同一套统计逻辑只需要改变传入的数据结果自动变化。分工清晰方便维护如果以后想修改 “及格线”我们只需要修改getPassCount里面的判断条件如果想修改等级划分标准只需要修改getLevel不会影响其他功能。真实项目开发就是这样拆分功能。6. 拓展思考可以自己尝试改造大家可以试着自己给这个案例增加功能锻炼思维增加功能统计不及格人数增加功能计算及格率及格人数 / 总人数改造使用函数表达式改写其中某一个工具函数7. 小结这个综合案例模拟了开发中很常见的工具函数封装思路把一个大需求拆成多个小、独立、单一职责的函数再由一个汇总函数统一调度。循环、分支、参数、返回值、作用域这些知识点在这个案例里全部结合起来使用。到这里函数相关的主线内容就实战巩固完毕下一篇我们开启全新的章节JS 对象。
RELATED

相关推荐

车载传感器与执行器:从物理信号到整车可靠性的工程实践指南

车载传感器与执行器:从物理信号到整车可靠性的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/27 9:17:58
PrimeTime时序路径分析与SDC约束实战指南

PrimeTime时序路径分析与SDC约束实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/27 9:17:58
滤波电路设计实战:RC与LC选型、参数计算及实际电感谐振修正

滤波电路设计实战:RC与LC选型、参数计算及实际电感谐振修正

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/27 9:17:58
MORE NEWS

更多资讯

📰

Genkit skills本质解析:可编排的LLM能力契约单元

1. 这个“skills”到底指什么?别被热搜词带偏了方向 最近刷技术社区、开发者论坛,甚至朋友圈里都频繁跳出“skills”这个词——不是英文单词本意的“技能”,而是某种具体可安装、可调用、可配置的实体模块。它和 Gemini、GKE、Genkit、Googl…

📰

MonitorControl 快速上手:3 分钟找回外接显示器的亮度与音量快捷键

MonitorControl 快速上手:3 分钟找回外接显示器的亮度与音量快捷键 【免费下载链接】MonitorControl 🖥 Control your displays brightness & volume on your Mac as if it was a native Apple Display. Use Apple Keyboard keys or custom shortcut…

📰

【跑包网】wifi握手包跑包网站 cap在线分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

CNN为何在MNIST上远超全连接网络?局部感受野与权值共享的数学本质

简介:本资源是一份面向深度学习初学者与实践者的MNIST手写数字识别完整项目包,聚焦神经网络与卷积神经网络(CNN)在图像分类任务中的落地应用。项目基于TensorFlow框架,涵盖数据加载、CNN模型构建、训练调优、性能评估及…

📰

大模型应用开发入门:吴恩达课程提示工程、RAG与避坑指南

简介:面向希望快速上手大模型与人工智能应用开发的开发者,这是一份完整中文化吴恩达大模型系列课程并复现范例代码的入门教程,适合具备基础 Python 知识、希望系统学习 LLM 开发流程的技术人群。内容围绕提示工程、检索增强生成、函数调用等课…

📰

NVMe Write Zeroes及周边命令:语义、命令帧与实测坑

盘一台机器上的盘,最容易被忽略的往往不是读带宽、写带宽这些跑分指标,而是“这块区间我想让它变成干净的零”这类管理动作。几年前给一批测试机做批量镜像还原,脚本里老老实实地用dd往整盘灌/dev/zero,一块 1.6 TB 的企业级盘要跑…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬