函数的重载
在强类型语言中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可,即可实现函数的重载
JS中没有函数的重载
- 原因: ECMAScript函数没有签名,因为其参数是由包含零或多个值的数组来表示的。没有函数签名,真正的重载就不可能实现。
- 同名函数:如果定义了两个名字相同的函数,那么后面定义的函数会覆盖前面定义的函数。
function addSomeNumber(num){
console.log (num + 100);
}
function addSomeNumber(num){
console.log(num + 200);
}
addSomeNumber(100);
//console.log 的值是300
- 由于后定义的函数覆盖了先定义的函数,因此当在最后一行代码中调用这个函数时,console.log的结果就是300.
- 也可以这样理解
var addSomeNumber = function (num) {
console.log (num + 100);
}
var addSomeNumber = function (num) {
console.log (num + 200);
}
var result = addSomeNumber(100); // 300
在创建第二个函数时,实际上覆盖了引用第一个函数的变量addSomeNumber
实现类重载的方法:
通过查看传入函数中参数的类型和数量并作出不同的反应,模拟方法的重载。
function printPeopleInfo(name, age, sex){
if(name){
console.log(name);
}
if(age){
console.log(age);
}
if(sex){
console.log(sex);
}
}
printPeopleInfo('Byron', 26);
printPeopleInfo('Byron', 26, 'male');
1.png
网友评论