美文网首页
重点--arguments的使用

重点--arguments的使用

作者: 潘肚饿兵哥哥 | 来源:发表于2019-06-23 13:22 被阅读0次

\color{rgba(254, 67, 101, .8)}{arguments的使用}

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

    <script>
        //arguments的使用
        function fn() {
            console.log(arguments);
        }
        fn(1, 2, 3);
    </script>
image.png

\color{rgba(254, 67, 101, .8)}{可以看到用arguments存储了当前函数接收到的实参}
\color{rgba(254, 67, 101, .8)}{arguments的值类似数组,但不是数组,它具有以下特点}

1.具有数组的length属性,arguments.length可以获取到arguments的长度(也就是形参的个数)
2.按照 键 / 值 对的方式进行存储
3.他没有数组的一些方法如:pop();push();等

\color{rgba(254, 67, 101, .8)}{但是可以把它转化为数组,并且arguments是可以进行遍历的}
\color{rgba(254, 67, 101, .8)}{arguments的值就是实参,可以用arguments[i]取到实参的值}
\color{rgba(254, 67, 101, .8)}{案例:利用函数求任意个数的形参的最大值}

    <script>
        //案例:利用函数求任意个数的形参的最大值
        function getMax() {
            var max = arguments[0];
            for (var i = 1; i < arguments.length; i++) {
                if (arguments[i] > max) {
                    max = arguments[i];
                }

            }
            return max;
        }
        var re = getMax(1, 2, 3, 4, 5);
        alert(re);
    </script>
image.png

\color{rgba(254, 67, 101, .8)}{案例:利用函数,翻转任意一个数组}

        function reverse(arr) {
            var newArr = [];
            for (i = arr.length - 1; i >= 0; i--) {
                newArr[newArr.length] = arr[i];
            }
            return newArr;
        }
        var arr1 = reverse([1, 2, 3]);
        console.log(arr1);
image.png

\color{rgba(254, 67, 101, .8)}{函数:利用函数封装方式,对数组排序--冒泡排序}

    <script>
        //用函数对数组进行冒泡排序
        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 temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            return arr;
        }
        var arr1 = sort([1, 4, 2, 9]);
        console.log(arr1);
    </script>
image.png

\color{rgba(254, 67, 101, .8)}{案例:判断闰年}

输入一个闰年,判断是闰年还是平年(闰年:能被4整除且不能被100整除,或者能被400整除)

        <script>
        //输入一个闰年,判断是闰年还是平年(闰年:能被4整除且不能被100整除,或者能被400整除)
        function isRunYear(year) {
            //如果是闰年返回true,否则返回false
            var flag = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;
            }
            return flag;
        }
        console.log(isRunYear(2000));
    </script>
image.png

\color{rgba(254, 67, 101, .8)}{函数可以调用另外一个函数}

执行顺序:
1.先执行到fn1函数,因为没有调用,所以继续往下执行
2.执行到fn2,还是没有调用,继续往下执行
3.再往下执行到调用fn1,就回到fn1函数体,执行函数
4.执行的结果是11,然后继续执行到下一步调用了fn2
5.返回fn2,执行fn2的函数体
6.fn2的函数体执行输出22和字符串fn2
7.fn2执行完毕后,回道fn1继续执行接下来的代码
8.执行fn1的最后一行代码,输出fn1字符串

        //函数可以互相调用
        function fn1() {
            console.log(11);
            fn2();
            console.log('fn1');
        }

        function fn2() {
            console.log(22);
            console.log('fn2');
        }
        fn1();
image.png

\color{rgba(254, 67, 101, .8)}{函数案例:用户输入年份,输出当年份2月份的天数}

分析:闰年是29天,平年是28天
就是在上面判断闰年的例子上变一下就行

    <script>
        //判断是否为闰年
        function isRunYear(year) {
            //如果是闰年返回true,否则返回false
            var flag = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;
            }
            return flag;
        }

        //用户输入年份,输出当年2月份的天数
        //就是调用一下上面判断闰年函数而已
        function backDay() {
            var year = prompt('请你输入年份:');
            //判断是否为闰年,就直接调用上面的判断是否闰年的函数
            //if 的这个year不是上面那个函数的形参,而是本函数的用户输入数字,然后这个数字变成上面闰年函数的形参
            if (isRunYear(year)) {
                alert(year + '年是闰年2月份有29天');
            } else {
                alert(year + '年份是平年2月份有28天');
            }
        }
        backDay();
    </script>
image.png
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript">
            
            function fun(){
                alert("函数要执行了~~~~");
                
                for(var i=0 ; i<5 ; i++){
                    
                    
                    if(i == 2){
                        //使用break可以退出当前的循环,只是退出循环,其他的代码还是会执行,比如下面的alert());
                        //break;
                        
                        //continue用于跳过当次循环
                        //continue;
                        
                        //使用return可以结束整个函数,return后面的代码完全不执行,不只是循环,就连后面的alert();都不执行
                        //return;
                    }
                    
                    console.log(i);
                }
                
                alert("函数执行完了~~~~");
            }
            
            //fun();
            
            
            //-----------------------------------------------------
            
            /*
             * 返回值可以是任意的数据类型
             *  也可以是一个对象,也可以是一个函数
             */
            
            
            //返回一个对象
            function fun2(){
                
                
                return {name:"沙和尚"};
            }
            
            var a = fun2();
            
            console.log("a = "+a);
            
            
            //-----------------------------------------------------------------
            
            
            //返回一个函数
            //可以在函数内部再声明函数,写多少层都可以
            function fun3(){
                //在函数内部再声明一个函数
                function fun4(){
                    alert("我是fun4");
                }
                
                //将fun4函数对象作为返回值返回
                return fun4;
            }
            
            //fun3();这里调fun3();就等于调fun4();结果就是  我是fun4
            a = fun3();
            //a();这也是调用fun3();,结果是  我是fun4
            
            
            //console.log(a);
            
            fun3()();//相当于获取返回值然后再执行,结果也是  我是fun4,前面的fun3()相当于接收到fun4()的值,后一个括号相当于再执行一次这个值
            
            
        </script>
    </head>
    <body>
    </body>
</html>

相关文章

网友评论

      本文标题:重点--arguments的使用

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