Câu trả lời:
Thông thường, trong các trình xử lý sự kiện, chẳng hạn như onsubmit
, trả về false là một cách để nói sự kiện không thực sự kích hoạt. Vì vậy, giả sử, trong onsubmit
trường hợp, điều này có nghĩa là biểu mẫu không được gửi.
event.preventDefault()
chức năng này. Tôi tin rằng trả lại sai là không được chấp nhận và không luôn luôn làm việc nữa.
return false
là trong phương thức, điều này có thay đổi gì không?
Tôi đoán rằng bạn đang đề cập đến thực tế là bạn thường phải đặt 'trả về sai;' tuyên bố trong xử lý sự kiện của bạn, tức là
<a href="#" onclick="doSomeFunction(); return false;">...
'Trả về sai;' trong trường hợp này ngăn trình duyệt nhảy đến vị trí hiện tại, như được chỉ ra bởi href = "#" - thay vào đó, chỉ doSomeFunction () được thực thi. Nó hữu ích khi bạn muốn thêm các sự kiện vào thẻ neo, nhưng không muốn trình duyệt nhảy lên xuống từng neo trên mỗi lần nhấp
Nó được sử dụng để ngăn chặn sự lan truyền của sự kiện . Bạn thấy khi bạn có hai yếu tố với một trình xử lý sự kiện nhấp chuột (ví dụ)
-----------------------------------
| element1 |
| ------------------------- |
| |element2 | |
| ------------------------- |
| |
-----------------------------------
Nếu bạn nhấp vào phần tử bên trong (phần tử 2), nó sẽ kích hoạt một sự kiện nhấp trong cả hai phần tử: 1 và 2. Nó được gọi là "Sự kiện sủi bọt". Nếu bạn chỉ muốn xử lý sự kiện trong phần tử 2, thì trình xử lý sự kiện phải trả về false để dừng việc truyền sự kiện.
Một ví dụ khác sẽ là trình xử lý liên kết onclick. Nếu bạn muốn dừng một hình thức liên kết làm việc. Bạn có thể thêm một trình xử lý onclick và trả về false. Để ngăn sự kiện truyền đến trình xử lý mặc định.
false
từ một trình xử lý sự kiện sẽ ngăn hành động mặc định liên quan đến một sự kiện; bạn cũng có thể thực hiện việc này thông qua gọi điện thoại event.preventDefault()
hoặc cài đặt event.returnValue = false
(IE); để ngăn sự kiện nổi bọt, bạn sẽ phải gọi event.stopPropagation()
hoặc cài đặt event.cancelBubble = true
(IE)
Er ... làm thế nào về một hàm boolean để chỉ 'không đúng'?
Tôi cũng đã đến trang này sau khi tìm kiếm "js, khi nào sử dụng 'return false;' Trong số các kết quả tìm kiếm khác là một trang tôi thấy hữu ích và đơn giản hơn nhiều, trên trang CSS-Tricks của Chris Coyier: Sự khác biệt giữa 'return false;' và 'e.preventDefault ();'
Ý chính của bài viết của ông là:
hàm () {trả về false; }
// BẰNG
hàm (e) {e.preventDefault (); e.stopPropagation (); }
mặc dù tôi vẫn khuyên bạn nên đọc toàn bộ bài viết
Cập nhật: Sau khi tranh luận về việc sử dụng return false; thay thế cho e.preventDefault (); & e.stopPropagation (); một trong những đồng nghiệp của tôi đã chỉ ra rằng return false cũng dừng thực thi gọi lại, như được nêu trong bài viết này: jQuery Events: Stop (Mis) Sử dụng Return false .
function() { return false; }
LÀ THIẾT BỊ ĐẾN function(e) { e.preventDefault(); e.stopPropagation(); }
, nhưng trong js thuần túy, nó không giống nhau, thực sự là function() { return false; }
THIẾT BỊ function(e) { e.preventDefault(); }
. Nó không ngừng truyền bá.
Tôi nghĩ rằng một câu hỏi tốt hơn là, tại sao trong trường hợp bạn đang đánh giá một bộ giá trị trả về boolean, bạn sẽ KHÔNG sử dụng true / false ? Ý tôi là, bạn có thể có true / null, true / -1, misc khác. Các giá trị "giả" của Javascript để thay thế, nhưng tại sao bạn lại làm vậy?
Khi bạn muốn kích hoạt mã javascript từ thẻ neo, trình xử lý onclick nên được sử dụng thay vì javascript: pseudo-Protocol. Mã javascript chạy trong trình xử lý onclick phải trả về true hoặc false (hoặc một biểu thức so với giá trị đúng hoặc sai) trở lại chính thẻ - nếu nó trả về true, thì HREF của neo sẽ được theo dõi như một liên kết thông thường. Nếu nó trả về false, thì HREF sẽ bị bỏ qua. Đây là lý do tại sao "trả lại sai;" thường được bao gồm ở cuối mã trong trình xử lý onclick.
Khi một câu lệnh return được gọi trong một hàm, việc thực thi hàm này bị dừng lại. Nếu được chỉ định, một giá trị đã cho sẽ được trả về cho người gọi hàm. Nếu biểu thức bị bỏ qua, thay vào đó không xác định được trả về.
Để biết thêm hãy xem trang tài liệu MDN choreturn
.
trả về false chỉ sử dụng nếu bạn có một số chức năng (bằng một số thử nghiệm) hoặc bạn muốn dừng một số chức năng, ví dụ sử dụng return false trong phần cuối "onsubmit"
Ngoài ra, liên kết ngắn và thú vị này để đọc qua https://www.w3schools.com/jsref/event_preventdefault.asp
Định nghĩa và cách sử dụng
Phương thức notifyDefault () hủy bỏ sự kiện nếu nó có thể hủy được, nghĩa là hành động mặc định thuộc về sự kiện sẽ không xảy ra.
Ví dụ: điều này có thể hữu ích khi:
Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL
Lưu ý: Không phải tất cả các sự kiện đều có thể hủy được. Sử dụng thuộc tính có thể hủy để tìm hiểu xem một sự kiện có thể hủy được không.
Lưu ý: Phương thức notifyDefault () không ngăn sự lan truyền thêm của một sự kiện thông qua DOM. Sử dụng phương thức stopPropagation () để xử lý việc này.