美文网首页前端JavaScript
复习笔记之函数

复习笔记之函数

作者: 晚月川 | 来源:发表于2020-03-28 23:15 被阅读0次

    函数

    函数就是封装了一段可以被重复执行调用的代码块
    目的:让大量代码重复使用,减少页面中的冗余代码(低耦合高内聚)

    // 1. 声明函数
    function 函数名() {
        // 函数体
    }
    // (1) 声明函数的关键字 全部小写
    // (2) 函数是做某件事,函数名一般是动词
    // (3) 函数不调用自己不执行
    // 2. 调用函数
    函数名();
    // 调用函数的时候不能忘记小括号
    

    函数的封装

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

    // 两个数字中间的所有数字求和
    function getSum(n,m) {
        var sum = 0;
        for(var i = 0; i <= m; i++) {
            sum += i;
        }
        console.log(sum);
    }
    getSum(1,100);
    getSum(10,50);
    

    形参实参

    形参:形式上的参数,函数定义的时候传递的参数,当前并不知道是什么(形参默认值是undefined)
    实参:实际的参数,函数调用的时候传递的参数,实参是传递给形参的
    参数的作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去

    function 函数名(形参1,形参2...) {// 在声明函数的小括号里面是形参(形式上的参数)形参是接受实参的,类似于一个变量
    
    }
    函数名(实参1,实参2...); // 在函数调用的小括号里面是实参(实际的参数)
    // 函数的参数可以有,也可以没有,个数不限
    
    // 利用函数求任意两个数的和
    function getSum(num1, num2) {
        console.log(num1 + num2);
    };
    // getSum(num1, num2);
    getSum(50,20);
    // 如果实参个数等于形参个数 => 输出正确结果
    // 如果实参个数多于形参个数 => 只取到形参的个数
    // 如果实参个数少于形参个数 => 多出来的形参定义为undefined,结果为NaN
    

    函数的返回值 return

    // 函数值的返回值格式
    function 函数名() {
        return 需要返回的结果;
    }
    函数名();
    // 函数为了实现某种功能,最终的结果需要返回给函数的调用者使用 函数名() 通过return实现的
    // 只要函数遇到return,就把后面的结果返回给函数的调用者 函数名() = return后面的结果
    

    =================
    利用函数求两个数的最大值

    function getMax(num1,num2) {
        return num1 > num2 ? num1 : num2;
    }
    console.log(getMax(3,7));
    

    =================
    利用函数求数组中的最大值

    function getArrayMax(arr) {
        var max = arr[0];
        for(var i = 1;i < arr.length; i++){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }
    // 在实际项目中,我们经常用一个变量来接受函数的返回结果
    var re = getArrayMax([1,5,7,57,95,21]);
    console.log(re);
    

    return 终止函数:return后面的代码不会被执行
    return 只能返回一个值,如果返回了多个值,以最后一个值为准
    =============
    求任意两个数的加减乘除结果

    function getResult(num1, num2) {
        return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
    }
    var re = getResult(5, 7);
    console.log(re);
    

    函数之间的相互调用

    function fn1() {
        console.log(111);
        fn2();
        console.log('fn1');
    }
    function fn2(){
        console.log(222);
        console.log('fn2');
    }
    fn1();
    // => 111  222  'fn2'  'fn1'
    

    ==================================
    案例:判断用户输入的年份的2月有多少天

      // 用户输入年份,输出当前年份二月份的天数
    function backDay() {
        let year = prompt('请您输入要查询的年份');
        if(isRunYear(year)){ // 调用函数需要加小括号(让函数执行)
            alert('当前年份是闰年,2月份有29天');
        }else{
            alert('当前年份是平年,2月份有28天');
        };
    }
    backDay();
    // 判断是否是闰年
    function isRunYear(year) {
    // 是闰年返回true,不是闰年返回false
    let flag = false;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        flag = true;
        }
        return flag;
    }
    

    arguments

    当我们不确定有多少个参数传递的时候,可以用arguments来获取,在JavaScript中,arguments是内置的实参集合(类数组),arguments存储了传递的所有实参

    function fn() {
        console.log(arguments);
        // 我们可以按照数组的方式遍历arguments
        for (var i = 0; i < arguments.length; i++) {
            console.log(arguments[i])
        }
    }
    fn(1,2,3);
    // 类数组,并不是真正意义上的数组
    // 具有数组的length属性
    // 按照检索的方式进行存储的
    // 它不能使用浏览器中数组的内置方法 pop/push...
    

    函数表达式

    // 函数表达式(匿名函数)
    // var fun = function() {};
    var fun = function (arr) {
        console.log('我是函数表达式');
        console.log(arr);
    }
    fun('呵呵');
    // fun是变量名,不是函数名
    // 函数表达式声明方式跟声明变量差不多,只不过变量里存的是值,而函数表达式里存的是函数
    // 函数表达式也可以进行传递参数
    

    相关文章

      网友评论

        本文标题:复习笔记之函数

        本文链接:https://www.haomeiwen.com/subject/yvveuhtx.html