ECMAScript 函数不能像传统意义上那样实现重载。而在其他语言(如 Java)中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可。如前所述,ECMAScript 函数没有签名,因为其参数是由包含零或多个值的数组来表示的。而没有函数签名,真正的重载是不可能做到的。
如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。
eg:
function numberAdd(num) {
return num + 1;
}
function numberAdd(num) {
return num + 2;
}
numberAdd(10); // 12
这里,函数 numberAdd()被定义了两次。第一个版本让参数加 1 ,第二个版本让参数加 2 。由于后定义的函数覆盖了先定义的函数,因此当调用函数 numberAdd()时候,最终打印的结果是 12。
【所以,由于不存在函数签名的特性,ECMAScript 函数不能重载】