从两个角度理解为什么 JS 中没有函数重载
从两个角度理解为什么 JS 中没有函数重载
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数、类型、顺序)的函数,这组函数被称为重载函数。重载函数通常用来声明一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
但是在 JS 如果不通过一些方法是无法实现重载的,可以从以下两个角度去理解。
1. 方法签名
方法签名指的是函数的名称加形参列表,并且通过函数的名称或者形参列表都可以区分出是不同的函数。
JS 中通过形参是没有办法区分出不同的函数的,只能通过函数的名称区分出不同的函数,现在我们来看一下下面的例子.
function add(a, b) {
return a + b;
}
function add(a, b) {
return a + b + 1;
}
上述实际上是一个函数,后面的函数 add 会覆盖前面的函数,究其原因还是因为 JS 是弱类型的语言,a 和 b 实际上都是用 var 声明的,等价于