Das folgende Code-Snippet ist ein Test, um zu sehen, was passiert, wenn eine Funktion und eine Variable denselben Namen im selben Bereich verwenden. In Chrome scheint die Variablendefinition in der Referenz Vorrang zu haben.Funktion und Variable mit dem gleichen Namen
- Kann die benannte Funktion ausgeführt werden oder ist sie vollständig durch die Variablendeklaration verdeckt?
- Ist es das Standardverhalten in Javascript, dass Variablen Vorrang vor Funktionen mit demselben Namen haben?
Sorry für die zweiteilige Frage, aber es schien verschwenderisch, zwei getrennte Fragen zu stellen.
Code:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var overlapping = function() { return 'this is a var holding an anonymous function' };
function overlapping()
{
return 'this is a function definition';
}
output(overlapping, 'overlapping');
output(overlapping(), 'overlapping()');
function output(expression, description)
{
document.writeln('<li>' + (description ? ('<i>' + description + '</i>: ') : '') + expression + '</li>');
}
</script>
</body>
</html>
Ich vermute, dass Javascript-Funktionen nach oben hievt, so dass die Variablendefinition auftreten, nachdem der Funktionsdefinition. Daher ist die letzte Definition - die Variable - die verwendete. –