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

Har*_*rsh -4 javascript function

我有以下这些功能.

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

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

a(1);
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*son 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 );
}
Run Code Online (Sandbox Code Playgroud)