Odpowiedzi:
Często w programach obsługi zdarzeń, takich jak onsubmitzwracanie wartości false, jest sposobem na poinformowanie zdarzenia, aby faktycznie nie było uruchamiane. Powiedzmy, że w tym onsubmitprzypadku oznaczałoby to, że formularz nie został przesłany.
event.preventDefault()tej funkcji. Uważam, że zwracanie fałszu jest przestarzałe i nie zawsze już działa.
return falsejest w metodzie, czy to coś zmienia?
Domyślam się, że masz na myśli fakt, że często musisz wstawić „return false”; instrukcja w programach obsługi zdarzeń, tj
<a href="#" onclick="doSomeFunction(); return false;">...
Polecenie „return false”; w tym przypadku zatrzymuje przeglądarkę przed skokiem do bieżącej lokalizacji, na co wskazuje href = "#" - zamiast tego wykonywana jest tylko funkcja doSomeFunction (). Jest to przydatne, gdy chcesz dodać zdarzenia do tagów kotwicy, ale nie chcesz, aby przeglądarka przeskakiwała w górę iw dół do każdej kotwicy po każdym kliknięciu
Służy do zatrzymania propagacji zdarzenia . Widzisz, gdy masz dwa elementy, oba z obsługą zdarzenia kliknięcia (na przykład)
-----------------------------------
| element1 |
| ------------------------- |
| |element2 | |
| ------------------------- |
| |
-----------------------------------
Kliknięcie elementu wewnętrznego (element2) wywoła zdarzenie kliknięcia w obu elementach: 1 i 2. Nazywa się to „propagacją zdarzeń”. Jeśli chcesz obsłużyć zdarzenie tylko w elemencie 2, program obsługi zdarzenia musi zwrócić wartość false, aby zatrzymać propagację zdarzenia.
Innym przykładem będzie program obsługi linków onclick. Jeśli chcesz zatrzymać działanie formularza linku. Możesz dodać moduł obsługi onclick i zwrócić false. Aby zatrzymać propagację zdarzenia do domyślnej procedury obsługi.
falsez procedury obsługi zdarzenia uniemożliwi wykonanie domyślnej akcji związanej ze zdarzeniem; możesz to również zrobić, dzwoniąc event.preventDefault()lub ustawiając event.returnValue = false(IE); aby zapobiec bulgotaniu wydarzenia, musisz zadzwonić event.stopPropagation()lub ustawić event.cancelBubble = true(IE)
Eee ... co powiesz na funkcję logiczną, która wskaże „nieprawda”?
Trafiłem też na tę stronę po wyszukaniu „js, kiedy użyć 'return false'; Wśród innych wyników wyszukiwania była strona, którą uważam za znacznie bardziej użyteczną i prostszą, w witrynie CSS-Tricks Chrisa Coyiera: Różnica między „return false”; i 'e.preventDefault ();'
Istota jego artykułu brzmi:
function () {return false; }
// JEST RÓWNE
function (e) {e.preventDefault (); e.stopPropagation (); }
chociaż nadal polecałbym przeczytanie całego artykułu.
Aktualizacja: Po omówieniu zalet używania funkcji return false; jako zamiennik dla e.preventDefault (); & e.stopPropagation (); jeden z moich współpracowników wskazał, że return false zatrzymuje również wykonywanie wywołań zwrotnych, jak opisano w tym artykule: jQuery Events: Stop (Mis) Using Return False .
function() { return false; }jest równa function(e) { e.preventDefault(); e.stopPropagation(); }, ale w czystym js, to nie to samo, function() { return false; }JEST RÓWNA function(e) { e.preventDefault(); }faktycznie. To nie zatrzymać rozprzestrzenianie.
Myślę, że lepszym pytaniem jest, dlaczego w przypadku, gdy oceniasz boolowski zbiór wartości zwracanych, czy NIE użyłbyś prawda / fałsz ? To znaczy, prawdopodobnie mógłbyś mieć true / null, true / -1, inne różne. Wartości „fałszywe” JavaScript do zastąpienia, ale dlaczego miałbyś to zrobić?
Jeśli chcesz wyzwolić kod javascript ze znacznika kotwicy, użyj funkcji obsługi onclick zamiast javascript: pseudo-protokół. Kod javascript, który działa w ramach procedury obsługi onclick, musi zwracać wartość true lub false (lub wyrażenie, które daje wartość true lub false) z powrotem do samego tagu - jeśli zwróci wartość true, to po HREF kotwicy będzie śledzony jak zwykły link. Jeśli zwróci fałsz, to HREF zostanie zignorowany. Dlatego właśnie „zwraca fałsz”; jest często dołączany na końcu kodu w module obsługi onclick.
Gdy w funkcji wywoływana jest instrukcja return, wykonywanie tej funkcji jest zatrzymywane. Jeśli jest określony, dana wartość jest zwracana do obiektu wywołującego funkcję. Jeśli wyrażenie zostanie pominięte, zamiast tego zwracany jest undefined.
Aby uzyskać więcej informacji, zajrzyj na stronę z dokumentacją MDN dotyczącąreturn .
zwróć false używając tylko jeśli masz jakieś działanie w funkcji (przez jakiś test) lub chcesz zatrzymać jakąś funkcję, na przykład użyj return false na końcu "onsubmit"
Również ten krótki i interesujący link do przeczytania https://www.w3schools.com/jsref/event_preventdefault.asp
Definicja i użycie
Metoda prevDefault () anuluje zdarzenie, jeśli można je anulować, co oznacza, że domyślna akcja należąca do zdarzenia nie zostanie wykonana.
Na przykład może to być przydatne, gdy:
Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL
Uwaga: nie wszystkie wydarzenia można anulować. Użyj właściwości cancellable, aby dowiedzieć się, czy wydarzenie można anulować.
Uwaga: Metoda prevDefault () nie zapobiega dalszemu propagowaniu zdarzenia przez DOM. W tym celu użyj metody stopPropagation ().