JavaScript-函数内置arguments对象

JavaScript中每个函数都有一个arguments的内置对象,也只有函数才有,这个对象里面存储了函数调用者传过来的实参,且数据的以伪数组形式存储的:

下面通过代码来了解一下arguments的作用以及用法:

<script>
        // arguments 的使用:只有函数才有arguments对象,而且是每个函数都内置好了这个对象
        function fu() {    // 这里没有写形参,因为有的情况下不确定调用者需要传递的参数个数
            console.log(arguments); // arguments对象里面存储了调用者传过来的所有实参,且数据是以伪数组的形式存储的
            // 我们可以按照数组的方式遍历arguments
            for (var i = 0; i < arguments.length; i++) {
                console.log(arguments[i]);
            }
        }
        fu(1, 2, 3);
        fu('red', 'green', 'bule', 'pink')

        // 伪数组:并不是真正意义上的数组,它有三个特性:
        // 1.具有数组的length属性
        // 2.内部数据是按照索引的方式进行存储的
        // 3.但是它没有真正数组的一些方法,如pop()、push()等

        // 案例1.:利用函数及内置arguments对象求任意长度的数组中的最大值
        function getMax() {
            var max = arguments[0]; // 将arguments伪数组中的第一位数赋值给max
            for (var i = 1; i < arguments.length; i++) {    // 从索引为1开始比较
                if (arguments[i] > max) {   // 如果后面的值有大于当前max的值的则将它的值赋值给max
                    max = arguments[i]
                }
            }
            return max; // 将遍历结束后max的值返还给调用者
        }
        var re = getMax(24, 4, 13, 9, 40, 7, 101);  // 注意值不需要放在数组中传过去
        console.log(re);    // 101
        var re = getMax(2, 43, 90, 71);     // 注意值不需要放在数组中传过去
        console.log(re);    // 90

        // 案例2:利用函数及内置arguments对象将调用者传过来的数逆序返还给调用者输出
        function reverse() {
            var newArr = [];
            for (var i = arguments.length - 1; i >= 0; i--) {
                newArr[newArr.length] = arguments[i]
            }
            return newArr;
        }
        var arr = reverse(1, 2, 3, 4, 5, 6, 7, 8);      // 注意值不需要放在数组中传过去
        console.log(arr);   // [8, 7, 6, 5, 4, 3, 2, 1]
</script>

执行代码截图:

 通过案例可以看出函数中的内置arguments对象是非常好用且实用的,有了它我们函数就可以得到更好的封装,能处理的问题和数据数量之间的关系就更方便且灵活了。arguments能直接存储实参的值,所以能够避免实参和形参数量不匹配的问题。通过它函数就能更好的处理数组、对象类数据了。

PS-伪数组:并不是真正意义上的数组,它有三个特性:

  1. 具有数组的length属性
  2. 内部数据是按照索引的方式进行存储的
  3. 但是它没有真正数组的一些方法,如pop()、push()等

小结:

  • 每个函数都有一个内置arguments对象,也只有函数才有
  • arguments对象能将实参以伪数组的形式存储下来
  • 可以直接使用for循环对arguments对象进行遍历方便操作实参
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值