介绍
就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
在C语言中称之为 函数
举个栗子
女神想吃饺子,但是女生懒,让我们包饺子。
就是说:
- 真正干活的是我们
- 女神调用我们
定义函数
格式:
function 函数名 (参数列表):返回值类型{
代码...
return ;//可以没有
}
解释:
function: 固定写法
函数名:英文字母开头,后面可以是字母、数字、下划线
参数列表:
无参数
有参数:如
a,b,c,表示形参
返回值类型:指定返回值的类型,无返回值时是
voidreturn:返回值,没有返回值不写
return
例子
function baoJiaoZi():void {
console.log("买菜买肉");
console.log("洗菜洗肉");
console.log("剁馅");
console.log("和面");
console.log("包饺子");
console.log("煮饺子");
}
调用函数
函数在定义完毕后,不会自己运行,必须被调用才能执行,调用函数:
baoJiaoZi();
优点
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
- 提高了代码的重用性。
例子
继续定义火锅函数
function huoguo() {
System.out.println("买菜买肉");
System.out.println("洗菜洗肉");
System.out.println("涮肉");
}
function baoJiaoZi() {
System.out.println("买菜买肉");
System.out.println("洗菜洗肉");
System.out.println("剁馅");
System.out.println("和面");
System.out.println("包饺子");
System.out.println("煮饺子");
}
//调用函数
baoJiaoZi();
优化程序:
function huoguo():void {
System.out.println("涮肉");
System.out.println("涮菜");
}
function baoJiaoZi():void {
System.out.println("剁馅");
System.out.println("和面");
System.out.println("包饺子");
System.out.println("煮饺子");
}
function maiXi():void{
System.out.println("买菜买肉");
System.out.println("洗菜洗肉");
}
// 包饺子,可以调用maiXi()
maiXi();
baoJiaoZi();
// 吃火锅,也可以调用maiXi(),没有写重复代码
maiXi();
huoguo();
函数的形参(形式参数)
比如数学公式:z=x+y ,要将数字代入到公式中进行计算,得到z
函数中的形参,相当于上面公式的 x、y,在定义时,必须指明 形参类型、形参名,不要给形参赋值
例子
定义一个函数,函数有2个形参,都是int型,打印这2个形参的和
//定义函数
function sum(a:number, b:number):void {
console.log(a + b);
}
//调用函数
sum(1,2);
注意
定义形参后,必须要传值,而且类型要匹配
返回值
以数学为例,要将数字代入到公式中进行计算,如:z=x+y,得到结果后,将该结果代入到另一个公式中,继续运算
函数的返回值也是如此,执行后,需要返回一个结果
例子:
定义一个函数,函数有2个形参,都是int型,返回这2个形参的和
/*
定义计算两个整数和的函数
返回值类型,计算结果是int 参数:不确定数据求和,定义int参数.参数又称为形式参数 */
function sum(a:number, b:number):number {
return a + b;
}
// 调用函数getSum,传递两个整数,这里传递的实际数据又称为实际参数
// 并接收函数计算后的结果,返回值
int sum = sum(5, 6);
console.log(sum);
程序执行,主函数 main 调用 getSum 函数,传递了实际数据 5和6 ,两个变量 a和b 接收到的就是实际参数,并 将计算后的结果返回,主函数 main 中的变量 sum 接收的就是函数的返回值。
不能有同名函数
function sum(a, b) {
return a + b;
}
function sum(a, b, c) {
return a + b + c;
}
//sum(1,2);//调用失败
sum(1,2,3);//成功