Відповіді:
Часто для обробників подій, наприклад onsubmit, повернення помилок - це спосіб сказати, що подія насправді не спрацьовує. Так, скажімо, у onsubmitвипадку це означало б, що форма не подається.
event.preventDefault()для цієї функціональності. Я вважаю, що повернення помилки застаріле і не завжди працює більше.
return falseв методі є, чи це щось змінює?
Я здогадуюсь, що ви маєте на увазі той факт, що вам часто доводиться ставити "false false"; заява у ваших обробниках подій, тобто
<a href="#" onclick="doSomeFunction(); return false;">...
Повернення помилкове; у цьому випадку браузер зупиняє перехід до поточного місця, як зазначено href = "#" - натомість виконується лише doSomeFunction (). Це корисно для тих випадків, коли ви хочете додати події до прив’язних тегів, але не потрібно, щоб браузер підскакував угору та вниз на кожен якір кожного натискання
Він використовується для зупинки поширення події . Ви бачите, коли у вас є два елементи як із обробником подій клацання (наприклад)
-----------------------------------
| element1 |
| ------------------------- |
| |element2 | |
| ------------------------- |
| |
-----------------------------------
Якщо натиснути на внутрішній елемент (element2), він спричинить подію клацання в обох елементах: 1 і 2. Це називається "Подія в бульбашці". Якщо ви хочете обробляти подію лише в element2, тоді обробник подій повинен повернути помилку, щоб зупинити поширення події.
Іншим прикладом буде посилання на обробник onclick. Якщо ви хочете припинити роботу форми посилання. Ви можете додати обробник onclick і повернути помилкове. Щоб запобігти поширенню події на обробник за замовчуванням.
falseз обробника подій запобіжить дію за замовчуванням, пов’язану з подією; ви також могли це зробити за допомогою виклику event.preventDefault()або налаштування event.returnValue = false(IE); для того, щоб зупинити подію з барботажем, вам доведеться зателефонувати event.stopPropagation()або налаштувати event.cancelBubble = true(IE)
Я також зайшов на цю сторінку після пошуку "js, коли використовувати" return false; " Серед інших результатів пошуку була сторінка, яку я знайшов набагато кориснішою та простішою, на сайті Кріса Койєра CSS-Tricks: Різниця між "return false;" та 'e.preventDefault ();'
Суть його статті полягає в:
function () {return false; }
// РІВНЕ ДО
функція (e) {e.preventDefault (); e.stopPropagation (); }
хоча я все-таки рекомендую прочитати всю статтю.
Оновлення: після аргументації переваг використання return false; як заміна для e.preventDefault (); & e.stopPropagation (); один із моїх колег вказав, що false false також зупиняє виконання зворотного дзвінка, як зазначено в цій статті: jQuery Events: Stop (Mis) Використання Return False .
function() { return false; }так само function(e) { e.preventDefault(); e.stopPropagation(); }, але в чистому JS, це не те ж саме, function() { return false; }так само на function(e) { e.preventDefault(); }самому справі. Це не припиняє розмноження.
Я думаю, що краще питання: чому у випадку, коли ви оцінюєте булевий набір повернутих значень, ви НЕ використовуєте true / false ? Я маю на увазі, ви, ймовірно, могли мати true / null, true / -1, інший різне. "Falsy" значення Javascript замінити, але навіщо це робити?
Коли ви хочете запустити код JavaScript від тега anchor, слід використовувати обробник onclick, а не псевдопротокол javascript: pseudo. Код javascript, який працює в обробнику onclick, повинен повертати true або false (або вираз, ніж оцінювання для true або false) назад до самого тегу - якщо він повертає true, то HREF якоря буде дотримуватися як звичайне посилання. Якщо він поверне помилкове значення, HREF буде ігноровано. Ось чому "повернути помилкове"; часто включається в кінці коду в обробник onclick.
Коли виклик повернення викликається у функції, виконання цієї функції зупиняється. Якщо вказано, задане значення повертається до виклику функції. Якщо вираз опущено, замість нього повертається невизначений.
Детальніше дивіться на сторінці документів MDN дляreturn .
повернути помилкове, використовуючи лише те, що у вас є якийсь черв'як у функції (деяким тестом) або ви хочете зупинити якусь функцію, наприклад, використовуйте return false в кінці "onsubmit"
Також це коротке та цікаве посилання для читання на https://www.w3schools.com/jsref/event_preventdefault.asp
Визначення та використання
Метод prevenDefault () скасовує подію, якщо її можна скасувати, це означає, що дія за замовчуванням, яка належить до події, не буде відбуватися.
Наприклад, це може бути корисно, коли:
Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL
Примітка: Не всі події можна скасувати. Скористайтеся властивістю "Скасувати", щоб дізнатися, чи можна подію скасувати.
Примітка. Метод prevenDefault () не перешкоджає подальшому поширенню події через DOM. Для цього вживайте метод stopPropagation ().