调用Javascript函数时幕后发生的事情

时间:2014-11-10 03:32:35

标签: javascript function

有人可以解释下面情况会发生什么:(这是面试问题)

function test(a){
    alert(a);
}

function test(a,b){
    alert(a,b);
}

function callTest(){
    test(a);
    test(a,b);
}

我被问到javascript如何调用这些方法,以及在此场景中幕后发生的事情

2 个答案:

答案 0 :(得分:3)

如果按顺序运行,则test(a)将替换为test(a,b)

当运行callTest()时,test(a)将发出警报(a,未定义),然后test(a,b)将发出警报(a,b)

答案 1 :(得分:1)

function test(a){     // f1. never called.
    alert(a);
}

function test(a,b){   // f2. overwrite f1 function because name of two functions is same.
    alert(a,b);
}

function callTest(){
    test(1);     // called f2 with (1, undefined)
    test(1,2);   // called f2 with (1, 2)
}
callTest();