为什么只存在具有相同名称的两个函数时才运行第二个函数

时间:2015-05-28 09:01:44

标签: javascript function

我有以下这些功能。

function a(obj)
{
    console.log("function 1 "+obj);
}

function a(x)
{
    console.log("function 2 "+"3");
}

a(1);

为什么第二个功能一直在运行?为什么不是第一个?

2 个答案:

答案 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并不关心参数是否不同,它只是按函数名称。