问答详情
源自:5-1 JS链式动画

有点懵,求指点

就是我调用startMove(obj,attr,iTraget,fn)这个函数时,为什么我只传递3个参数时,也能调用这个函数。我个人认为startMove(this,‘height’,100),是错误的啊!因为没有3个参数的函数,只有4个参数的函数啊!求解

提问者:唯尔半截湘妃 2016-08-04 17:15

个回答

  • NO_3667788
    2016-08-04 21:41:26

    有一个对象  arguments对象,是用来存储函数调用时传递给该函数的所有参数。

    用法 :函数名.arguments   类似数组,需要遍历才能看到值。它有个属性length可以看到实际有几个参数。

    当没有传递fn这个参数的时候。获取的值是:函数名.arguments.length=3; ,传递了后就等于4.

    分析:个人认为是因为,js专门用这个对象来存储你调用时传递的参数,那么你执行的时候,它就不是去看你定义时有几个参数,而是直接去访问arguments这个对象去获得你实际传送了多少参数。所以才会完美执行。