JS函数实参和形参参数个数不一致时的处理和后果

描述

在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,传一个的时候默认第二个值与第一个相等...所以,难搞,具体情况还需具体对待,呀啦~

猜你喜欢

转载自my.oschina.net/u/2427564/blog/1570830