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

描述

在js中函数没有重载的概念,若是声明了多个重名的函数,无论函数的形参个数是否同样, 只有最后一个有效,其余的函数声明都是无效的。jquery

实参比形参少

定义一个函数fn(v1, v2),调用fn()时写成fn(s1):函数

**处理:**s1会赋值给v1。当第二个参数v2在函数中没有用到就不会被赋值,若是用到会被当undefined处理。query

**结果:**v2为undefined时,可能会报错。参数

实参比形参多

定义一个函数fn(v1, v2),调用fn()时写成fn(s1, s2, s3):undefined

**处理:**s1被赋值给v1,s2被赋值给v2,s3会被忽略。

**结果:**不会报错。

其余状况

以上是通常JS的处理方式,固然也有特殊,好比jquery中的clone()函数,其默认参数有两个,不传值的时候两个参数默认false,传一个的时候默认第二个值与第一个相等...因此,难搞,具体状况还需具体对待,呀啦~

相关文章
相关标签/搜索