函数重载与js
什么是函数重载
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。
与之相似的函数重写
函数重写,也被称为覆盖,是指子类重新定义父类中有相同名称和参数的虚函数,主要在继承关系中出现。
函数重载基本条件
- 函数名必须相同;
- 函数参数必须不相同,可以是参数类型或者参数个数不同;
- 函数返回值可以相同,也可以不相同。(如果函数的名称和参数完全相同,仅仅是返回值类型不同,是无法进行函数重载的。)
函数重载应用场景
同一场景下,对于函数功能相同,仅仅参数不同的情况下进行重载,可减少开发的重复命名等情况
javascript 中的函数重载
javascript 中没有真正意义上的函数重载,因为 javascript 中同一作用域下的同名函数,前者会被后者覆盖,但是可通过其他方法间接实现重载同样的效果,javascript中的函数没有签名,它的参数是由包含零的多个数组来表示的。无函数签名的话重载是不可能做到的
但是我们可以简介方法实现重载效果,使用 arguments 对象,是函数内部的一个类数组对象,它里面保存着调用函数时,传递给函数的所有参数。 简单的讲就是使用逻辑判断,根据参数所在数组的长度来执行不同的代码
function foo(){ if(arguments.length === "条件1"){ "函数1" } if(arguments.length === "条件2"){ "函数2" } }
重载的本质就是将多个功能相近的函数合并为同一个函数