我有以下这些功能。
function a(obj)
{
console.log("function 1 "+obj);
}
function a(x)
{
console.log("function 2 "+"3");
}
a(1);
为什么第二个功能一直在运行?为什么不是第一个?
答案 0 :(得分:5)
您不能在同一范围中使用两个具有相同名称的函数。第二个将取代第一个。这就是为什么第一个永远不会被执行的原因。
如果您希望重载该函数,可以通过在函数内立即检查参数的类型来实现。例如,请考虑以下事项:
function a ( x ) {
var output;
switch ( typeof x ) {
case "string" :
output = "foo";
break;
case "object" :
output = "bar";
break;
default:
output = typeof x;
}
console.log( output );
}
答案 1 :(得分:1)
由于第二个函数在第一个函数之后被声明,它会覆盖第一个函数。 Javascript并不关心参数是否不同,它只是按函数名称。