zoukankan      html  css  js  c++  java
  • javascript中的arguments对象

    在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量。

    1、什么是arguments?

    这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[i]和.length。

    2、有什么作用?

    js语法不支持重载!但可用arguments对象模拟重载效果。

    arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象。
    arguments[i]: 获得传入的下标为i的参数值
    arguments.length: 获得传入的参数个数!

    重载:

      程序中可定义多个相同函数名,不同参数列表的函数,
      调用者不必区分每个函数的参数,
      执行时,程序根据传入的参数个数,自动判断选择哪个函数执行。

    例子如下:

    // 1、如果用户传入一个参数,求平方
        function sum(a){
            console.log(a*a);
        }
    
        //如果用户传入两个参数,就求和
        function sum(a,b){
            console.log(a+b);
        }
        sum(4); //
        sum(4,5); //

    上述例子中本意是想让同名函数sum()根据参数不同输出不同结果,但是sum是函数名字,本质也是个变量,

    第二个会覆盖第一个,所以上述的正确输出答案是:NaN,9.所以这样显然不可以。

    如果用arguments,就简单多了。

    如下2个例子:

    //2、
        function calc(){
            //如果用户传入一个参数,求平方
            if(arguments.length==1){
                console.log(arguments[0]*arguments[0]);
            }else if(arguments.length==2){
            //如果用户传入两个参数,就求和
                console.log(arguments[0]+arguments[1]);
            }
        }
        calc(4); //16
        calc(4,5); //9
    /*3、无论用户传入几个数字,都可以求和*/
        function add(){
            //arguments:[]
            //遍历arguments中每个元素,并累加
            for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]);
            return sum;//返回和
        }
    
        console.log(add(1,2,3)); //6
        console.log(add(1,2,3,4,5,6)); //21

    这就是JS利用arguments重载的效果,简单理解就是一个函数重复利用.

    arguments.length是有实参决定,即函数调用时候里面的参数个数决定!

  • 相关阅读:
    商城项目开发(一)
    java基础
    SpringBoot笔记
    设计模式-创建型模式
    讲真的 曾惜
    Linux常用精简命令实训练习
    使用ZeroClipboard.js复制内容到剪贴板上
    浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式
    jQuery mouseover与mouseenter,mouseout与mouseleave的区别
    div中的img垂直居中
  • 原文地址:https://www.cnblogs.com/-walker/p/5600393.html
Copyright © 2011-2022 走看看