Во втором примере вы на самом деле не возвращаются функция, а скорее результат выполнения функции. (. С учетом выполнения кода из справа налево в данном случае)
Для иллюстрации, немного изменить свой первый пример:
$('form').submit(function(){
var result = checkForm();
});
Как вы можете видеть, функция выполняется и результат возвращается из функции. Просто так ничего не происходит с этим результатом. Он сразу же выходит из сферы действия, когда анонимная функция завершается, исчезая в древности.
Слегка изменить второй пример для дальнейшей иллюстрации:
$('form').submit(function(){
var result = checkForm();
return result;
});
Так же, как и в первом примере, checkForm
выполняется и ее результат сохраняется в переменной. Затем это значение возвращается из анонимной функции. Естественно, что этот процесс может быть в подкладке, так что временная переменная не требуется:
$('form').submit(function(){
return checkForm();
});
Порядок операций не меняется, checkForm
выполняется, возвращает результат, и что результат возвращается из анонимная функция.
Вы могли вернуть саму функцию, что оно фактически не выполнил его:
$('form').submit(function(){
return checkForm;
});
Поскольку функции являются «граждане первого класса» в JavaScript и может передаваться, как и любой другой переменной, будет возвращен фактическая функция, а не результат функции. Предполагалось, что код вызова, вероятно, завершит выполнение функции.Однако в этом случае (обработчик) это, конечно, не имеет смысла, поскольку он ожидает логическое значение, а не функцию.
Что возвращает 'checkForm()'? – Satpal
В обработчике событий вы можете вернуть 'true' или' false', последний объединяет 'preventDefault' и' stopPropagation' в jQuery, останавливая отправку формы, поэтому, если функция 'checkForm()' возвращает 'false', форма не отправляется, если он возвращает 'true', форма отправляется и т. д. – adeneo
В примере 2 вы не возвращаете функцию, вы возвращаете результат выполнения функции. Возврат функции будет выглядеть так: 'return checkForm;'. Конечно, это не имеет смысла в этом случае, но я считаю, что различие важно. –