JS第八讲--函数

本文详细介绍了JavaScript中的函数,包括函数的概念、声明与调用、参数使用、返回值以及arguments对象的运用。通过案例展示了如何利用函数实现累加求和、数组最大值计算等功能,强调了函数在代码复用和模块化中的重要性。同时,讨论了函数参数的匹配原则和return语句的作用,以及如何处理不确定数量的参数。最后,提供了两个实用的函数示例:数组反转和冒泡排序。
摘要由CSDN通过智能技术生成

八、函数

(一)函数导读

(二)函数的概念及使用

函数:封装了一段可以重复执行的代码块,只对外界提供一个简单的接口.

目的:让大量代码重复使用

函数使用时分为两步:1.声明函数. 2.调用函数

声明函数的关键字: function

function 函数名(参数){
    函数体
}

函数是做某件事情,函数名一般是动词.

调用函数:千万不要忘记加小括号

函数名(参数);

案例:求1-100之间的累加和

function getSum(){
    var sum=0;
    for(var i=1;i<=100;i++){
        sum+=i;
    }
    console.log(sum);
}
getSum(); //调用函数

(三)函数的参数

可以利用函数的参数实现函数重复不同的的代码.

语法:

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

如:

function cook(aru){ //形参不需要写var,可直接赋值
    console.log(aru);
}
cook('酸辣土豆丝');

形参:形式上的参数,函数定义的时候传递的参数,当前并不知道是什么

实参:实际上的参数,函数调用的时候传递的参数,实参是传递给形参的.

多个参数之间用逗号隔开.

形参是不用声明的变量.

形参和实参个数不匹配的问题:

  1. 如果形参和实参个数一致,则正常输出结果.

  2. 如果实参的个数多于形参的个数,会取到形参的个数

  3. 如果实参的个数小于形参的个数,没传值的会设为undefined.输出可能是NaN

我们尽量让形参的个数和实参匹配.

(四)函数的返回值return

有的时候我们希望函数将值返回给用户,此时通过return语句就可以实现.

语法:

function 函数名(){
    函数体;
    return 返回值;
}
var a=函数名();

案例:利用函数求数组[5,2,99,101,67,77]的最大值

arr=[5,2,99,101,67,77];
function getMax(arr){
    var max=arr[0];
    for(var i=0;i<arr.length;i++){
        if(max<arr[i]) max=arr[i];
    }
    return max;
}
var max=getMax(arr); //将数组名传进去

注意:

  1. return除了可以返回值,还可以终止函数.即:函数在运行return之后就不会再执行.

  2. return一次只能返回一个值.如果需要返回多个值,可以将它们封装为数组.

  3. 函数如果没有return,它的返回值为undefined

(五)arguments的使用

当我们不确定有多少个参数传递时,可以用arguments来获取。在JavaScript中,arguments实际上是当前函数的一个内置对象,所有函数都内置了一个arguments对象,arguments对象中存储了传递的额所有实参。

语法:

function fn(){ //不写形参
    console.log(arguments); //里面存储了所有传递过来的实参
    console.log(arguments.length);
    console.log(arguments[0]);
    for(var i=0;i<arguments.length;i++){
        console.log(arguments[i]);
    }
}
fn(1,2,3);

arguments展示形式是一个伪数组,因此可以进行遍历.

伪数组并不是真正的数组.它具有以下特点:

  • 具有length属性

  • 按索引方式存储数据

  • 不具有数组的push,pop等方法.

只有函数才有arguments对象,而且每个函数都内置了arguments对象.

案例:利用函数求任意个数的最大值.

function getMax(){
    var max=arguments[0];
    for (var i = 0; i < arguments.length; i++) {
        max=max<arguments[i] ? arguments[i] : max;
    }
    return max;
}
console.log(getMax(1,2,3));
console.log(getMax(1,2,3,4,5));
console.log(getMax(11,2,34,444,5,100));

(六)函数案例

  1. 利用函数反转数组

    利用re[re.length];

    function reverse(arr){
        var re=[];
        for(var i=0;i<arr.length;i++){
            re[re.length]=arr[arr.length-i-1];
        }
        return re;
    }
    console.log(reverse([1,2,3,4,5]));
  2. 函数封装冒泡排序(sort排序)

    function sort(arr){
        for(var i=0;i<arr.length;i++){
            for(var j=0;j<arr.length;j++){
                if(arr[j]>arr[j+1]){
                    var n=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=n;
                }
            }
        }
        return arr;
    }
    console.log(sort([1,2,3,5,4]));

函数可以调用另一个函数

(七)函数的两种声明方式

  1. 利用函数关键字来自定义函数.

    function fn(){
        
    }
    fn();

  2. 函数表达式(匿名函数)

    var 变量名 = function(){};

    如:

    var fun=function(){
        console.log('我是函数表达式');
    }
    fun();

    这里的fun是变量名,不是函数名,所以这个函数是匿名函数.

    函数表达式声明方式和声明变量差不多,只不过变量存的是值,函数表达式里存的是函数.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值