描述
在js中函数没有重载的概念,如果声明了多个重名的函数,不管函数的形参个数是否一样, 只有最后一个有效,其他的函数声明都是无效的。
实参比形参少
定义一个函数fn(v1, v2),调用fn()时写成fn(s1):
**处理:**s1会赋值给v1。当第二个参数v2在函数中没有用到就不会被赋值,如果用到会被当undefined处理。
**结果:**v2为undefined时,可能会报错。
实参比形参多
定义一个函数fn(v1, v2),调用fn()时写成fn(s1, s2, s3):
**处理:**s1被赋值给v1,s2被赋值给v2,s3会被忽略。
**结果:**不会报错。
其他情况
以上是一般JS的处理方式,当然也有特殊,比如jquery中的clone()函数,其默认参数有两个,不传值的时候两个参数默认false,传一个的时候默认第二个值与第一个相等...所以,难搞,具体情况还需具体对待,呀啦~