Показать сообщение отдельно
  #1 (permalink)  
Старый 18.11.2017, 12:48
Аспирант
Отправить личное сообщение для mikello Посмотреть профиль Найти все сообщения от mikello
 
Регистрация: 18.11.2017
Сообщений: 68

объявление переменной
Всем привет, может кто поможет понять следующий код:

Цитата:
function Send() {

$.post("ajax.php",
{
act: "send", // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
name: $("#pac_name").val(), // имя пользователя
text: $("#pac_text").val() // сам текст сообщения
},
Load); // по завершению отправки вызываем функцию загрузки новых сообщений Load()

$("#pac_text").val(""); // очистим поле ввода сообщения
$("#pac_text").focus(); // и поставим на него фокус
document.write(last_message_id);
return false; // очень важно из Send() вернуть false. Если этого не сделать то произойдёт отправка нашей формы, те страница перезагрузится
}
var last_message_id = 0; // номер последнего сообщения, что получил пользователь
var load_in_process = false; // можем ли мы выполнять сейчас загрузку сообщений. Сначала стоит false, что значит - да, можем
Несмотря на то,что переменные last_message_id и load_in_process определены после функции. document.write(last_message_id) срабатывает и выводит значение 0.

Этот код эквивалентен следующему:
Цитата:
var last_message_id = 0; // номер последнего сообщения, что получил пользователь
var load_in_process = false; // можем ли мы выполнять сейчас загрузку сообщений. Сначала стоит false, что значит - да, можем

// Функция для отправки сообщения
function Send() {

$.post("ajax.php",
{
act: "send", // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
name: $("#pac_name").val(), // имя пользователя
text: $("#pac_text").val() // сам текст сообщения
},
Load); // по завершению отправки вызываем функцию загрузки новых сообщений Load()

$("#pac_text").val(""); // очистим поле ввода сообщения
$("#pac_text").focus(); // и поставим на него фокус
document.write(last_message_id);
return false; // очень важно из Send() вернуть false. Если этого не сделать то произойдёт отправка нашей формы, те страница перезагрузится
}

Почему так происходит ? Как document.write() может выводить значение переменной last_message_id, если определена она уже после функции?

Последний раз редактировалось mikello, 18.11.2017 в 12:55.
Ответить с цитированием