У меня есть простой HTML-документ и JS-файл, и я не могу понять, почему этот простой код не работает.
Вот index.html:
<!DOCTYPE HTML>
<html>
<head>
<script>
function getStatus() {
alert('test 1');
var isOnline = isOnline();
alert('test 3');
}
function isOnline() {
alert('test 2');
return true;
}
</script>
</head>
<body>
<script>getStatus();</script>
</body>
</html>
Он отображает только предупреждение «Тест 1», а затем ничего. Если я удалю вызов функции isOnline(), он без проблем отобразит предупреждение «Тест 1», за которым следует предупреждение «Тест 3». Я получаю Uncaught TypeError: isOnline is not a function в консоли браузера.
Обновлено:
Оказывается, это произошло из-за того, что я назвал свою переменную тем же именем, что и моя функция. Я новичок в JavaScript и не знал об этом ограничении.
Какое сообщение об ошибке появляется в консоли?
В вашем коде нет ошибки, он отлично работает
Я добавил в вопрос скриншот ошибки из консоли браузера. В нем говорится: Uncaught TypeError: isOnline не является функцией
Я удалил несколько вещей, когда делился кодом здесь, и, как оказалось, удалил важную часть. Если вы присваиваете значение, возвращаемое функцией isOnline(), переменной, это вызывает ошибку. Вот почему никто не мог воспроизвести, я не думал, что это будет актуально. Я обновил свой вопрос с этой подробностью.
Оказывается, это произошло из-за того, что я назвал свою переменную тем же именем, что и функция. Я новичок в JavaScript и не знал, что это запрещено.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Обычно оповещение может быть выполнено один раз для каждого взаимодействия. Хотя я пробовал ваш код с помощью chrome devtools, и он работает. Это может быть потому, что ваш html-файл читает ваш js-файл, чтобы предупредить, а затем завершить функцию.
function getStatus() {
alert("1");
isOnline();
alert("3");
}
function isOnline() {
alert("2");
}
getStatus();
Успешно.
http://jsfiddle.net/humskoa3/2/
<!DOCTYPE HTML>
<html>
<head>
<script>
function getStatus() {
alert('Test 1');
isOnline();
alert('Test 3');
}
function isOnline() {
alert('Test 2');
}
</script>
</head>
<body>
<script>getStatus();</script>
</body>
Почему бы нет?
снова тест!
Это связано с тем, что я назвал свою переменную тем же именем, что и моя функция.