It is a bold statement but most likely you have been declaring functions in the wrong way, lets find out why!
In JavaScript you have 2 ways (at least) to declare a function:
Declarative
This is the traditional way of declaring functions
function foo() {}
Function expressions
Where you assign an anonymous function to a variable
var foo = function(){}
JavaScript has a nefty feature, functions can be used before they are defined
This is perfectly legal and will yield an alert prompt.
This works because behind the scenes the JavaScript compiler will process all function declarations first so they are available everywhere inside the scope they where declared.
The problem is that this behaviour differs between JavaScrit engine
Run this code in Firefox and Chrome
Firefox returns first
while Chrome returns second
It seems that on Chrome declarative functions with the same name overwrite previous ones
To solve this problem you should use function expressions as they are not affected by this problem
Because we use anonymous functions there is no way they are overwritten and will have the same behaviour on all JavaScript engines.
Conclusion
So be on the safe side and avoid weird problems on the long run use function expressions to declare your functions