0. 目标
- 能够说出为什么需要函数
- 能够根据语法书写函数
- 能够根据需求封装函数
- 能够说出形参和实参的传递过程
- 能够使用函数返回值
- 能够使用arguments获取函数的参数
1. 函数的概念
1.1 函数
函数:封装了一段可以被重复执行调用的代码块,就是让大量代码重复使用。
2. 函数的使用
2.1 声明函数
function 函数名(参数1, 参数2....){ 函数体;}
2.2 调用函数
函数名(参数1, 参数2....)
使用总结
- function 声明函数的关键字,小写
- 函数名一般用动词 sayHi();
- 函数不调用自己不执行
- 函数的调用要和定义时一致,参数个数也要一致
2.3 函数的封装
函数的封装就是把一个或多个功能通过函数的方式封装起来,对外值提供一个简单的函数借口
2.4 案例
2.4.1 函数计算1-100累加和
3. 函数的参数
3.1 形参和实参
在声明函数中的参数是形参 形式上的参数,在函数定义中
在函数调用中的参数是实参 实际的参数,在函数调用中,会传递给形参
function 函数名(形参1, 形参2...){ } // 形参是接受实参的值,类似于一个不用声明的变量
函数名(实参1, 实参2...);
function cook(aru){
console.log(aru);
}
cook('酸辣土豆丝');
cook('大肘子');
// 函数的参数可以有,可以没有,也可以有很多个
// 利用函数求任意两个数的和
function getSum (num1, num2) {
console.log(num1 + num2);
}
3.2 函数形参实参个数不匹配
function getSum (num1, num2) {
console.log(num1 + num2);
}
// 1. 形参 实参个数匹配,正常输出结果
getSum(1, 2); // 3
// 2. 实参个数多于形参,会取到形参的个数
getSum(1, 2, 3); // 3
// 3. 实参个数少于形参,多余的形参定义为Undefined,最终结果是NaN
getSum(1); // NaN
4. 函数的返回值 return
4.1 return语句
function getSum (num1, num2) {
return(num1 + num2);
}
getSum(1, 3) // getSum = (num1 + num2);
函数只是实现某种功能,最终结果需要返回给你函数的调用者,通过return实现 只要函数遇到return就把后面的结果返回给函数的调用者
//利用函数比较任意两数最大值
function getMax(num1, num2){
return(num1 > num2 ? num1 : num2);
}
getMax(10, 20);
//利用函数求数组[5, 2, 99, 101, 67, 77]中的最大值
function getArrMax(arr){
var max = arr[0];
for(var i = 1; i <= arr.length - 1; i++){
if(arr[i] > max){
max = arr[i];
}
}
}
getArrMax([5, 2, 99, 101, 67, 77]);
4.2 return 终止函数
程序一旦遇到return语句,就会终止,后续的代码不会继续执行
return num1,num2; // 只返回num2
return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
通过数组返回多个值 return 只能返回一个值,返回多个值只会返回最后一个值
4.3 函数没return任何值
函数中没有return任何值,返回一个Undefined
4.4 break\continue\return
break 退出循环;continue 退出本次循环;return 可以退出循环并返回值,还能退出函数
5. arguments的使用
arguments 是函数中一个内置对象,存储了传递过来的所有实参,仅有函数由这个对象
伪数组,并不是真正意义上的数组
- 具有数组length的属性
- 按照索引方式进行存储
- 没有真正数组的一些方法 pop() push()等等
function fn(){
arguments.length;
arguments[2];
}
fn(1,2,3,4,5);
6. 函数案例
函数可以调用另外一个函数(函数之间相互调用)
7. 函数声明的两种方式
7.1 function 声明方式(命名函数)
7.2 函数表达式(匿名函数)
var 变量名 = function( ){ }; var fun = function(){ console.log('hello world'); }
fun是变量名,不是函数名,调用方式是 变量名()