js函数传参未定义问题?

都知道在js中没有办法直接实现方法重载因为在js中如果定义了多个名称相同,但参数个数不一样的方法其实只有最后一个方法能被真正调用,其他的方法都被覆盖掉了

但每一个函数都有一个特殊的参数arguments,利用它可以实现方法的重载

只能处理两个参数,如果有多个参数或者没有参数,一个参数的情況都是处理不了的如果没有传递参数,则firstnumber,sencondnumber都是未定义的如果传递了一个参数,就相当于只给firstnumber赋值了sencondnumber依然是未定义。相反如果传递了哆于两个的参数则相当于firstnumber,sencondnumber都赋值了,虽然还有其他的参数但处理时都忽略掉了。如果能获取其他的参数自然就可以处理了。此时应該就可以想到函数的特殊参数arguments这个包含了传递给函数的所有参数,利用它就可以实现方法重载的效果

当然这种方法的弊端就是参数的順序不能打乱,如果函数实现依赖于参数的顺序就必须进行特殊处理,例如传递null来占位

由于传递给函数的参数是严格按照定义函数的順序给每一个参数赋值的,如果只想给第二个参数赋值则必须传递两个参数,否则实际上传递的值赋值给了第一个参数并没有赋值给苐二个参数。

例如只想给sencondnumber传值但不想给firstnumber传值,必须这样调用Add(null,2)(当然函数内部必须处理传递特殊值的情况),如果这样调用Add(2),其实是给firstnumber传值了相当于调用了传递了一个参数的情况。

;问题解决后请采纳答案;如果自己找到解决方案也可以

抄袭、复制答案,以达到刷声望分或其他目的的行为在CSDN問答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!





在获取页面控件时 页面是什么标簽 在后台就写什么标签 例如
页面是label标签 你在数据绑定事件中 就这么写


我要回帖

更多关于 js函数传参未定义 的文章

 

随机推荐