即使使用不同的参数,Js函数名也会冲突

时间:2015-04-13 06:29:07

标签: javascript conflict

我在我的jsp文件中包含了两个.js文件。
每个文件都有一个名为getOrderType的函数,但是一个接受单个参数而另一个接受3.具有3个参数的函数首先被导入。当函数被调用时on' onclick'具有三个参数的事件,仍然会调用单个参数函数。
我认为,是否由于导入文件的顺序?如果没有,我该如何解决冲突? 在改变进口顺序时,冲突仍然存在,但我仍然需要完整的证明解决方案

3 个答案:

答案 0 :(得分:2)

在JavaScript中,函数没有这种多态行为,如果你想实现类似的东西,你必须自己实现调度,类似于:

function a(x,y,z) {
    typeof(z) == 'undefined' ? b(x,y) : c(x,y,z);
}

答案 1 :(得分:0)

在JavaScript中你不能拥有各种函数依赖于参数,但是你可以存储对函数的引用并根据参数长度做出决定:

var f1 = (function sum(a, b, c) {
    console.log('f1 function called');
    console.log(arguments.length); // 3
});

var f2 = (function sum(a) {
    console.log('f2 function called');   
    console.log(arguments.length); // 1
});

function manager(a, b, c) {
    if(arguments.length == 3) {
        return f1(a, b, c);   
    }
    if(arguments.length == 1) {
        return f2(a);   
    }
}

manager(1, 2, 3);  // f2 function called
manager(4);  // f1 function called

答案 2 :(得分:0)

不确定。没有办法使函数重载。你可能还记得它是语言的原生,这是一个限制。