解锁所有课程内容,保存学习进度,系统化学习编程
让我们从一个实际的问题开始:计算1到n的和,其中n可以是不同的值。
假设我们需要多次计算数列的和。在不同的数学问题中,我们可能需要计算:
每次我们都写出完整的计算代码:
问题分析:
现在让我们用函数来解决这个问题。先不要关注函数内部的细节,我们后面会详细讲解。现在只需要感受函数带来的好处:
函数的价值:
函数就是一段有名字的代码块,它可以接收输入数据,进行处理,然后返回结果。
生活类比:洗衣机
就像洗衣机可以根据不同的衣服和模式产生不同的结果,函数也可以根据不同的输入产生不同的输出。
基于洗衣机的类比,让我们理解函数需要哪四个核心部分:
函数名称(Function Name)
输入参数(Input Parameters)
函数体(Function Body)
返回结果(Return Value)
现在让我们看看具体的 sum 函数是如何对应这四个部分的:
我们现在以上面的 sum 函数为例,进行详细的语法讲解:
函数的完整语法结构:
function 关键字
函数名称:sum
输入参数列表:(n: number)
() 包围参数名: 类型n: number 表示参数名为 n,类型为数字n: number 的语法结构和使用 let n: number 很相似,只是没有 let 关键字返回类型:: number
: 指定: number 表示函数承诺返回一个数字函数体:{...}
{} 包围的代码块return 关键字
return total; 表示将 total 的值作为函数的返回结果return 后面的值类型必须与声明的返回类型一致完整语法模板:
定义完函数后,我们需要调用函数来使用它。让我们学习函数调用的语法:
在之前的课程中,我们已经多次接触过"调用"的概念:
在数组课程中,我们学过调用方法:
我们一直在使用 console.log():
现在学习调用我们自己定义的函数:
调用方法的特点:
变量名.方法名(参数)(注意中间的点号 .)array.push() 中的 array 是数组类型的变量,console.log() 中的 console 是系统控制台类型的变量调用函数的特点:
函数名(参数)(没有点号,直接使用函数名)虽然语法不同,但本质上是相同的:
💡 提示: 关于数据类型和对象的概念,我们在后续课程中详细学习。现在你只需要理解:
array 和 console 都是某种数据类型的变量push、log)变量名.方法名() 的形式来使用这些方法让我们通过一个完整的例子来分析函数调用的每个步骤:
函数调用 sum(5) 的详细分解:
函数名:sum
圆括号 ()
参数 5
5 会被赋值给函数定义中的参数 n5 是 number 类型,与 n: number 的类型要求一致赋值操作 let result = sum(5)
1515 被保存到变量 result 中result 为 number 类型让我们用一个完整的 sum 函数例子来说明 TypeScript 的类型检查和类型推断:
TypeScript 的自动类型推断:
当我们调用 sum(10) 时,TypeScript 会:
10 是 number 类型,匹配 n: number 的要求: number,自动将 result1 推断为 number 类型基于上面的分析,我们可以总结出函数调用的通用语法结构:
直接调用(不保存返回值):
保存返回值到变量:
语法要点:
函数可以接收多个参数,这让函数能够处理更复杂的数据和逻辑。
让我们看一个完整的例子,包含函数定义和调用,你可以直接运行这些代码:
参数定义规则:
, 分隔参数名: 类型调用要点:
让我们通过一个完整的例子来演示函数调用的各种常见用途:
通过上面的例子,我们可以理解函数调用的一个核心概念:函数调用的结果就是一个值,这个值可以用在任何需要它的地方。
让我们重点分析 add(add(1, 2), add(3, 4)) 这个嵌套调用:
执行顺序:
add(1, 2),得到结果 3add(3, 4),得到结果 7add(3, 7),得到最终结果 10关键理解: 函数调用的结果就是一个普通的数值,可以:
let result = add(1, 2);if (add(1, 2) >= 3)add(add(1, 2), add(3, 4))这就是为什么函数调用可以像数学公式一样灵活使用——因为函数的返回值就是一个普通的值!
成绩总和:439
任务要求:
💡 提示:
total 初始值为 0total 上total较大值:25 较大值:30 较小值:15 较小值:3
任务要求:
max 函数返回两个数中较大的那个min 函数返回两个数中较小的那个💡 提示:
max 函数:如果 a > b,返回 a,否则返回 bmin 函数:如果 a < b,返回 a,否则返回 b💡 重要说明:在这个练习中,我们不需要处理数组为空的情况,因为测试用的数组已经有元素了。
最高分:96 最低分:78
任务要求:
findMax 函数:找出数组中的最大值findMin 函数:找出数组中的最小值💡 提示:
let max = numbers[0])let i = 1)回顾:取余运算符判断奇偶数
我们在"基础运算符"课程中学过,可以用取余数 % 来判断奇偶数:
8 % 2 === 0)7 % 2 !== 0)8是偶数:true 7是偶数:false 7是奇数:true 8是奇数:false
任务要求:
isEven 函数:判断一个数是否为偶数isOdd 函数:判断一个数是否为奇数什么是绝对值?
绝对值表示一个数到0的距离:
什么是平方?
平方就是数字自己乘自己:
绝对值:15 绝对值:10 平方:400 平方:25
任务要求:
absolute 函数:返回数字的绝对值square 函数:返回数字的平方💡 提示:
value < 0,返回 -value,否则返回 value什么是质数?
质数(也叫素数)是大于1的自然数,除了1和它本身外,不能被其他自然数整除。
质数的例子:
不是质数的例子:
回顾:使用 % 判断能否整除
我们在"基础运算符"课程中学过,可以用取余运算符 % 来判断能否整除:
12 % 3 === 0,表示12能被3整除)13 % 3 === 1,表示13不能被3整除)在判断质数时,我们使用 number % i === 0 来检查 number 能否被 i 整除。
如何判断质数:
number % i === 0),不是质数,返回 false13是质数:true 12是质数:false 1是质数:false 2是质数:true 3是质数:true 7是质数:true
任务要求:
通过这节课的学习,你已经掌握了函数的基础概念:
function、参数列表、返回类型、函数体的写法函数名(参数) 的调用方式现在你已经掌握了函数的基础概念!接下来学习函数的高级特性,让函数发挥更强大的作用。