JavaScrip之函数

171 阅读3分钟

0. 目标

  • 能够说出为什么需要函数
  • 能够根据语法书写函数
  • 能够根据需求封装函数
  • 能够说出形参和实参的传递过程
  • 能够使用函数返回值
  • 能够使用arguments获取函数的参数

1. 函数的概念

1.1 函数

函数:封装了一段可以被重复执行调用的代码块,就是让大量代码重复使用。

2. 函数的使用

2.1 声明函数

function 函数名(参数1, 参数2....){ 函数体;}

2.2 调用函数

函数名(参数1, 参数2....)

使用总结

  1. function 声明函数的关键字,小写
  2. 函数名一般用动词 sayHi();
  3. 函数不调用自己不执行
  4. 函数的调用要和定义时一致,参数个数也要一致

2.3 函数的封装

函数的封装就是把一个或多个功能通过函数的方式封装起来,对外值提供一个简单的函数借口

2.4 案例

2.4.1 函数计算1-100累加和

1651153472(1).png

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

1651154760(1).png

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的使用

1651193851(1).png

arguments 是函数中一个内置对象,存储了传递过来的所有实参,仅有函数由这个对象

1651194052(1).png

伪数组,并不是真正意义上的数组

  1. 具有数组length的属性
  2. 按照索引方式进行存储
  3. 没有真正数组的一些方法 pop() push()等等
function fn(){
    arguments.length;
    arguments[2];
}
fn(1,2,3,4,5);

1651194547(1).png

6. 函数案例

1651198599(1).png

1651199062(1).png

1651199394(1).png

函数可以调用另外一个函数(函数之间相互调用)

1651200107(1).png

7. 函数声明的两种方式

7.1 function 声明方式(命名函数)

7.2 函数表达式(匿名函数)

var 变量名 = function( ){ }; var fun = function(){ console.log('hello world'); }

fun是变量名,不是函数名,调用方式是 变量名()