Как использовать "return false;" в javascript (или jquery)

Мне было интересно использовать return false;, потому что ...

⋅ Иногда я вижу такие функции:

function foo(){
  ⋅⋅⋅
  return false;
}

⋅ Иногда я вижу вызов таких функций:

<div onclick="foo(); return false;"></div>

⋅ Иногда я вижу оба из вышеперечисленного,

⋅ Иногда я вижу никто из вышеперечисленного.

(Я знаю о теме Каков эффект добавления «return false» в прослушиватель событий щелчка?, но, похоже, это отвечает только на мой пункт №2, или я ошибаюсь?)

В итоге у меня возникли вопросы по этому поводу. Что такое правильно для использования return false;?
А когда это нужно делать?

При использовании jQuery изменяется ли правильно или необходимость?

Заранее благодарим за любой ответ.

Очень сильно зависит от того, чем вы хотите заниматься. В jQuery его можно использовать для выхода из each, в этом html-фрагменте он используется, чтобы ничего не делать после foo при щелчке, в функции он просто возвращает false.

Federico klez Culloca 11.04.2018 14:17

Вы можете использовать способ html, тогда вам не нужно возвращать false из функции. Или верните false из функции, а в html просто верните значение, полученное от функции, которое является ложным.

Mosh Feu 11.04.2018 14:17

Использование встроенного события в javascript - плохая практика!

Radonirina Maminiaina 11.04.2018 14:20

@RadonirinaMaminiaina, Спасибо за комментарий. Считается ли это плохой практикой только из-за того, что JS должен быть полностью в одном месте?

Takit Isy 11.04.2018 16:22

Кто-нибудь знает, почему мой вопрос был отклонен? Чтобы при необходимости поправить.

Takit Isy 11.04.2018 16:22

@TakitIsy, если вы используете JS-событие, используйте его в своем js-скрипте

Radonirina Maminiaina 11.04.2018 16:23
2
7
1 521
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Функции без явного возвращаемого значения всегда будут возвращать undefined. В случае обработчиков событий вы возвращаете false, чтобы избежать поведения браузера по умолчанию. См. Каков эффект добавления «return false» в прослушиватель событий щелчка?

Ответ принят как подходящий

В обработчике событий атрибутов onxyz старого стиля (обычно называемом «DOM 0», потому что они не указаны), возврат false предотвращает действие по умолчанию (подробнее в этот вопрос). Например, для ссылки это предотвращает переход по ссылке; для формы onsubmit это предотвращает отправку формы.

Итак, на ваш вопрос "как правильно" есть несколько ответов:

  • Если вы хотите, чтобы функция foo определяла, происходит ли действие по умолчанию, используйте onclick="return foo()" и попросите foo вернуть false, чтобы предотвратить значение по умолчанию, или вернуть что-нибудь еще (или просто return;, которое фактически вернет undefined), чтобы разрешить его.

  • Если вы всегда хотите, чтобы значение по умолчанию было предотвращено, используйте onclick="foo(); return false;" (хотя это не предотвратит значение по умолчанию, если foo выдает исключение).

  • В любом не очень современном браузере, если вы всегда хотите, чтобы значение по умолчанию не допускалось, даже если foo выдает исключение: onclick="event.preventDefault(); foo();" (да, это работает даже в Firefox, в котором нет глобальной переменной event, потому что обработчики onxyz выполняются в области с локальная переменная event).

Но, возможно, в основном:

  • Обработчики "DOM 0" старого стиля, как правило, не являются лучшей практикой; вместо этого используйте современную обработку событий (addEventListener, attachEvent, если вам нужно поддерживать устаревшие версии IE).

Сделайте свой выбор. :-)

Во-первых, я не рекомендую встроенный JavaScript.

Вам следует использовать addEventListener.

Пример :

document.getElementById('yourdiv').addEventListener('click', function(){
  foo(); 
  return false;
});

ИЛИ ЖЕ

document.getElementById('yourdiv').addEventListener('click', function(){
  foo(); 
});

с function foo() { return false }

в зависимости от ваших потребностей

Первый случай:

function foo() {
  return false;
}

Вызывается функция foo, и именно эта функция возвращает false. Итак, вы можете получить ложь, выполнив:

var isitfalse = foo() -> isitfalse будет определен как false

ИЛИ ЖЕ

if (!isitfalse) {
   alert('Yes it\'s false')
} 

Второй случай:

<div onclick="foo(); return false;"></div>

Действие onclick вызовет функцию foo, затем onclick вызовет return false. Таким образом, он отличается от первого случая, когда ваша функция возвращает false.

jQuery

return false или return true или return what-ever-you-want одинаково работают в jQuery, так же использовать его

Еще что нужно знать:

Если вы попросите функцию вернуть что-либо, функция дальше не пойдет.

function foo() {

  if (2 > 1) { return something }

  alert()

}

В этом случае вы никогда не увидите предупреждение

Другие вопросы по теме