Poniższy fragment kodu jest testem umożliwiającym sprawdzenie, co dzieje się, gdy funkcja i zmienna mają tę samą nazwę w tym samym zasięgu. W Chrome wydaje się, że definicja zmiennych ma pierwszeństwo w odniesieniu.Funkcja i zmienna o tej samej nazwie
- Czy wymieniona funkcja może zostać wykonana, czy jest całkowicie zaciemniona przez deklarację zmiennej?
- Czy to standardowe zachowanie w JavaScript, że zmienne mają pierwszeństwo przed funkcjami o tej samej nazwie?
Przepraszamy za pytanie dwuczęściowe, ale wydawało się marnotrawstwo, aby zadać dwa osobne pytania.
Kod:
<!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>
Zgaduję, że JavaScript wciągniki funkcje do góry, dzięki czemu definicji zmiennej wystąpić po definicji funkcji. Dlatego ta ostatnia definicja - zmienna - jest używana. –