• 6_2:arguments + 函数实例


    知识梳理

    1 只有函数才有arguments 
    2 使用场景:当实参个数无法确定时使用

    一  arguments的使用 

    1)arguments概念

    //1 arguments是当前函数的一个内置对象
    //2 所有函数都内置了arguments对象
    //3 argments对象中存储了传递来的所有实参
    //4 它是一个伪数组

    2)伪数组

    //1 可以和数组一样遍历
    //2 具有length属性
    //3 按索引方式存储数据
    //4 不具有数组的 push pop等方法

    3)基本使用

    function hello() {
        console.log(arguments);//arguments 里面存储了所有传递过过来的实参
        console.log(arguments.length);//1 可以获取伪数组的长度
        console.log(arguments[1]);//2 可以用数组元素下标来访问
        //3 可以按照数组的方式 遍历arguments
        for (var i = 0; i < arguments.length; i++) {
            console.log(arguments[i] + '--');//打印所有的实参
    
        }
    }
    hello(1,2,3);

    二 函数小练习

    1)求任意个数的最大值

    //思路:用max和数组中的其他数一一比较
    function getMax() {
        var max = arguments[0];//设置一个最大值的变量 值是数组的第一个
        for (var i = 1; i < arguments.length; i++) {
            if (arguments[i] > max) {
                max = arguments[i];
            }
        }
        return max;
    }
    console.log(getMax(10,15,4,20,45));
    console.log(getMax(100,250,360,41,85));

    2)翻转数组

    //1 旧数组的最后一个索引 = 新数组的第一个索引
    //2 i的初始值是旧数组的最后一个索引 = arr.length - 1
    //3 新数组的索引正好 等于 新数组的length
    function revolve(arr) {
        var newArr = []; //定义一个新数组
        for (var i = arr.length - 1; i >= 0; i--) {
            newArr[newArr.length] = arr[i];
        }
        return newArr;
    }
    console.log(revolve([1,2,3,4,5]));
    console.log(revolve([100,200,300,400,500]));

    3)冒泡排序

    //冒泡排序 把元素从大到小或从小到大排序
    //外层循环负责趟数 5个数跑4趟
    // 五个数length就等于5  索引从0开始 跑四趟就是 0 1 2 3
    //所以 i < arr.length - 1 就是3
    //-----------分析内层-------------------
    //内存循环负责每一趟 比较几次
    function bubbling(arr) {
        for (var i = 0; i < arr.length -1; i++) { //外层循环负责跑几趟
            for (var j = 0; j < arr.length - i -1; j++) { //内存循环负责比较几次
                //比较难理解的是:j<arr.length - i -1;
                //比较两个变量
                if (arr[j] > arr[j+1]) {
                    var temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            } 
        }
        return arr;
    }
    console.log(bubbling([10,12,9,40,15]));

    4)判断闰年

    function isRunYear(year) {
        var flag = false;
        if (year % 4 == 0 && year % 100 !== 0 || year % 400 == 0) {
            flag = true;
        }
        return flag;
    }
    console.log(isRunYear(2000));
    console.log(isRunYear(1999));

    5)函数之间可以相互调用

    6)输入年份 打印出当年二月份的天数

    //输入年份 显示当年二月份的天数  平年有28天,闰年有29天
    //输出函数
    function backDay() {
        var year = prompt('请输入年份');
        if (isRunYear(year)) {
            alert(year + '年是闰年二月份是29天');
        } else {
            alert(year + '年是平年二月份是28天')
        }
    }
    backDay(); //调用函数
    
    //判断闰年函数
    function isRunYear(year) {
        var flag = false;
        //判断闰年 能被400整除  或者 能被4整除并且不能被100整除
        if (year % 4 == 0 && year % 100 !== 0 || year % 400 == 0) {
            flag = true;
        }
        return flag;
    }
  • 相关阅读:
    BUPT复试专题—最长连续等差子数列(2014软院)
    BUPT复试专题—奇偶求和(2014软件)
    BUPT复试专题—网络传输(2014网研)
    Hopscotch(POJ 3050 DFS)
    Backward Digit Sums(POJ 3187)
    Smallest Difference(POJ 2718)
    Meteor Shower(POJ 3669)
    Red and Black(poj 1979 bfs)
    测试
    Equations(hdu 1496 二分查找+各种剪枝)
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14403448.html
Copyright © 2020-2023  润新知