尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
副队长JavaScript教程(38)-函数的参数与返回值
点此查看所有教程、项目、源码导航文章目录1. 背景2. 什么是参数形参和实参3. 参数数量不匹配的情况4. 什么是返回值 return5. return 的重要特点6. 重点区分return 和 console.log7. 综合小案例8. 小结1. 背景上一篇我们学会了函数的定义和调用。我们写的开车函数里面的步骤是写死的不管谁来调用输出的内容永远一模一样。但现实里很多事情流程大体一样细节却不一样。比如同样是打招呼我们想对张三说你好也想对李四说你好。如果按照之前的写法我们要写两个几乎一样的打招呼函数这样就又产生重复代码了。那能不能有一个办法同一个函数调用的时候临时传给它不同的数据让它做出不一样的效果这就要用到函数的参数。2. 什么是参数形参和实参参数就是调用函数的时候可以传给函数的数据。我们先看例子写一个打招呼的函数// name 就是形参写在定义函数的小括号里面functionsayHello(name){console.log(你好name);}写在函数定义小括号里的name叫做形参。它就相当于一个占位的容器用来接收外面传进来的数据。调用函数的时候在小括号里面写上具体的数据这个数据叫做实参sayHello(张三);sayHello(李四);sayHello(王五);运行效果你好张三 你好李四 你好王五调用sayHello(张三)的时候实参张三会交给形参name函数内部就可以使用这个数据。我们也可以传递多个参数多个参数之间用逗号隔开functionsayInfo(name,age){console.log(名字name);console.log(年龄age);}sayInfo(张三,18);sayInfo(李四,20);小提示实参和形参是按顺序一一对应的第一个实参传给第一个形参第二个实参传给第二个形参。3. 参数数量不匹配的情况调用的时候传的实参数量不一定和形参数量完全一致这里有两种常见情况。第一种形参多实参少没有收到数据的形参值为undefined。functionsayInfo(name,age){console.log(名字name);console.log(年龄age);}sayInfo(赵六);这个例子只传了名字age 没有收到数据age 的值就是 undefined。第二种实参多形参少。多余传进来的数据函数内部没有变量接收直接被忽略。functionsayHello(name){console.log(你好name);}sayHello(小明,学生);这里的学生传进去了但是没有形参接收函数里面用不到它。4. 什么是返回值 return到目前为止我们的函数都是在函数内部直接 console.log 打印内容。但很多时候我们并不想让函数直接打印而是希望函数帮我们算出一个结果把结果交给外面的代码外面想怎么用就怎么用。这个把结果交出去的能力靠return关键字实现交给外面的数据叫做返回值。我们写一个计算两个数字相加的函数functionadd(num1,num2){// 把相加的结果返回出去returnnum1num2;}// 调用函数接收返回结果存到变量里面letresadd(10,20);console.log(res);运行之后控制台输出 30。5. return 的重要特点return除了返回数据还有一个很关键的特性一旦代码执行到 return函数会立刻停止return 后面的代码不会再执行。看这个例子functionadd(num1,num2){returnnum1num2;console.log(这一行代码不会执行);}letresadd(10,20);console.log(res);第二行 console.log 永远不会运行因为 return 已经结束函数了。如果一个函数没有写 return那么这个函数默认返回undefined。6. 重点区分return 和 console.log这是初学者最容易踩坑的地方一定要分清console.log只是把内容打印到控制台只是给人看数据不会交给外面代码继续计算return是把计算结果返回给调用处这个结果可以赋值给变量、继续参与后续计算。举个对比// 只是打印结果拿不出来继续计算functionadd1(num1,num2){console.log(num1num2);}// 返回结果外面可以继续使用这个结果functionadd2(num1,num2){returnnum1num2;}letaadd2(1,2);// 返回的结果可以继续参与运算letba10;console.log(b);7. 综合小案例我们写一个函数接收两个数字返回较大的那一个数字下面是完整可运行的 HTML 代码第 1 行告诉浏览器当前是一个 HTML5 文档请按 HTML5 标准来解析当前网页。第 2 行告诉浏览器网页开始了。第 4-6 行是网页的头部此处 meta 标签告诉浏览器请用 utf-8 中文编码来解析网页的内容。第 8 行body 开始了标志着浏览器开始处理内容区域。第 9 行运行到 script 标签了浏览器开始自上而下处理 JS 代码。第 10 行运行到 function浏览器知道这是要定义一个 JS 函数。第 10-16 行浏览器理解 JS 函数的功能此处务必注意执行 10-16 行时浏览器理解了函数定义的具体操作步骤也就是代码块中的代码。但是函数体的代码并不会真正执行因为此处只是一个定义。第 18 行执行 getMax 函数此时会将 33 传递给 n155 传递给 n2然后真正执行 getMax 函数体经过比较把较大值 55 返回赋值给变量 result1。第 19 行执行 getMax 函数此时会将 99 传递给 n121 传递给 n2然后真正执行 getMax 函数体经过比较把较大值 99 返回赋值给变量 result2。第 20 行执行 console.log把 “最大值 155” 打印在控制台。第 21 行执行 console.log把 “最大值 299” 打印在控制台。8. 小结参数是外部传给函数的数据让同一个函数可以处理不同的数据变得灵活。返回值 return是函数把计算好的结果交还给外部代码。有了参数和返回值之后我们就可以封装很多通用的工具函数后面写代码的时候反复调用。
RELATED

相关推荐

副队长JavaScript教程(41)-函数的应用案例

副队长JavaScript教程(41)-函数的应用案例

点此查看 所有教程、项目、源码导航 文章目录1. 背景2. 案例实现思路3. 代码实现4. 运行输出5. 重点拆解里面的核心知识点6. 拓展思考(可以自己尝试改造)7. 小结1. 背景 前面我们已经把函数的基础知识点全部学完:定义调用、参数、返回值、作…

📅 2026/10/27 9:23:01
车载传感器与执行器:从物理信号到整车可靠性的工程实践指南

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

/* 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
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

本月热门

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

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

📞 💬