JavaScript |关于函数的基础知识

400 阅读5分钟

目标

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

能回答目标的问题就不用看这篇文章啦

目录

  • 函数的概念
  • 函数的使用
  • 函数的参数
  • 函数的返回值
  • arguments的使用
  • 函数案例
  • 函数的两种声明方式

1. 函数的概念

函数就是封装了一段可以被重复执行调用的代码块

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

2. 函数的使用

函数在使用时分为两步:声明函数和调用函数。

  • function是声明函数的关键字,必须小写
  • 由于函数一般是为了实现某个功能才定义的,所以通常我们将函数名命名为动词,比如 getSum
  • 调用的时候千万不要忘记添加小括号
  • 口诀∶函数不调用,自己不执行
        // 声明函数
        function hanshuming () {
            //函数体代码
        }

        //调用函数
        函数名();//通过调用函数名来执行函数体代码

2.3 函数的封装

  • 函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口
  • 简单理解︰封装类似于将电脑配件整合组装到机箱中(类似快递打包)

3. 函数的参数

3.1 函数的实参和形参

声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参

参数说明
形参形式上的参数函数定义的时候传递的参数当前并不知道是什么
实参实际上的参数函数调用的时候传递的参数实参是传递给形参的

参数的作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去。

注意点:

  • 参数之间用逗号隔开
  • 形参可以看做是不用声明的变量

3.3 函数形参实参不匹配问题

参数个数说明
实参个等于形参个数输出正确结果
实参个数多于形参个数只取到形参的个数
实参个数小于形参个数多的形参定义为uhdefined,结果为NaN

3.4 小结

  • 函数可以带参数也可以不带参数
  • 声明函数的时候,函数名括号里面的是形参,形参的默认值为undefined
  • 调用函数的时候,函数名括号里面的是实参
  • 多个参数中间用逗号分隔
  • 形参的个数可以和实参个数不匹配,但是结果不可预计,我们尽量要匹配

4. 函数的返回值

4.1 return语句

判断两个数谁大的三元表达式

return num1>num2 ? num1 :num2;

  1. 终止函数
  2. 只能返回一个值 ,最后一个值
  3. 没有值会返回undefined

4.2 数组的最大数值

        function getArrMax(arr) {
            var max = arr[0];
            for (var i=1;i<arr.length; i++){
                if (arr[i] >max){
                    max = arr[i];
                }

            } 
            return max
        }
        var re = getArrMax([5,2,99,101,67,77]);
        console.log(re);

在我们实际开发里面,我们经常用一个变量来接受函数的返回结果使用更简单

4.5 break,continue,return的区别

  • break :结束当前的循环体(如for、while )
  • continue :跳出本次循环,继续执行下次循环(如for、while )
  • return :不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码

小作业

  • 写一个函数,用户输入任意两个数字的任意算术运算(简单的计算器小功能),并能弹出运算后的结果.
  • 写一个函数,用户输入任意两个数字的最大值,并能出弹运算后的结果。
  • 写一个函数,用户输入任意三个不同数字的最大值,并能单出运算后的结果。
  • 写一个函数,用户输入一个数判断是否是素数,并返弹出回值(又叫质数,只能被1和自身整数的数)

5. arguments的使用

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

arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点∶

  • 具有length属性
  • 按索引方式储存数据
  • 不具有数组的push , pop等方法

5.1 利用函数求任意个数的最大值

        function getMax() {
            var max = arguments[0];
            for (var i=1 ; i< arguments.length ; i++) {
                if (max <arguments[i]) {
                    max = arguments[i];
                }
            }
            return max;

        }
        console.log(getMax(1,2,3));

6. 函数案例

6.1 利用函数封装方式,翻转任意一个数组

        // 利用函数翻转任意数组
                function reverse(arr) {
                    var newArr = [] ;
                    for (var i =  arr.length - 1; i >= 0 ;i--) {
                        newArr[newArr.length] = arr[i];
                    }
                    return newArr
                }

                var arr1 = reverse([1,3,4,6,9]);
                    console.log(arr1);

6.2 利用函数封装的方式 ,冒泡排序。

        // 利用函数冒泡排序sort
        function sort(arr) {

            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = 0; j < arr.length - i - 1; j++)
                    if (arr[j] > arr[j + 1]) {
                        var temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }

            }
            return arr;
        }

        var arr1 = sort([1, 10, 8, 3]);
        console.log(arr1);

6.3 函数可以调用函数

因为每个函数都是独立的代码块,用于完成特殊任务,因此经常会用到函数相互调用的情况。

6.4 判断二月有多少天

        //用户输入年份,输出2月多少天
        function backDay(){
            var year = prompt('请输入年份');
            if (isRunyear(year)){
                alert('29');
            } else {
                alert('28');
            }
        }
        backDay();
        //判断是否是闰年
        function isRunyear (year) {
            var flag = false;
            if (year % 4 == 0 && year %100 != 0 || year % 400 == 0){
                flag = true;
            }
            return flag;
        }

6.5 函数的两种申明方式

  1. 利用函数关键字自定义函数(命名函数)
function fn (){}

  1. 函数表达式(匿名函数)
var 变量名 = function() {}
  • 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值,而函数表达式里面存的是函数
  • 函数表达式也可以进行传递参数