JackShcherbakov
@JackShcherbakov

Каким образом вызвалась эта функция?

Надо, же! С этим код вообще ничего понять не могу, вроде бы все элементарно, но уже 2-ой момент меня смущает (несмтря на то, что код перестал сервером восприниматься). Каким чертом тут в качестве 3-его аргумента выступает функция, которая создается после??? Затем весь код срабатывает на доли секунды, вижу желаемый резульатат и тут же выскакивает голый Html с одним словом pass или fail, взависимости от резульатата. Тому, кто прояснит, выражаю заранее огромную благодарность!
$(document).ready(function() {
	$('#login').submit(function() {
    var formData = $(this).serialize();
    $.post('login.php',formData,processData).error('ой');//ВЫЗЫВАЕМ ФУНКЦИЮ....
    function processData(data) { ..СОЗДАЕМ ЕЕ... 
		  console.log(data==='pass');
        if (data==='pass') {
           $('.main').html('<p>Вы авторизованы!</p>');
        } else {
           if ($('#fail').length === 0) {
             $('#formwrapper').prepend('<p id="fail">Некорректная  информация. Попробуйте еще раз</p>');
          }
        }
      } // end processData
    return false;
  }); // end submit
		
}); // end ready
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
В JS функции создаются интерпретатором до выполнения кода, т.е. на момент фактического выполнения скрипта все функции уже в памяти и доступны для вызова. Поэтому, вне зависимости от места объявления, функции всегда доступны.

Переменные, кстати, тоже доступны, только все они равны undefined до момента фактической инициализации. Исключение - let переменные, которые могут вообще не существовать в текущей области видимости.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kirill-93
В жс как и в большинстве ЯП функции можно объявлять после вызова. Работать они будут.
При этом, присваивание функции работать не будет. Например следующая функция будет работать выше в коде:
function Foo() {
    console.log('foo');
}

А вот так уже нет:
let foo = function() {
    console.log('foo');
};

Второй вариант будет работать только ниже по коду, первый где-угодно.
А голый html со словом pass или fail - это, очевидно, что-то другое. В этом коде ничего такого нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы