Không có javascript javascript: void (0) có nghĩa là gì?


1379
<a href="javascript:void(0)" id="loginlink">login</a>

Tôi đã nhìn thấy hrefnhiều lần như vậy , nhưng tôi không biết chính xác điều đó có nghĩa là gì.


12
javascript:là một trong nhiều lược đồ URI: en.wikipedia.org/wiki/URI_scheme , như thế nào data:.
Ciro Santilli 冠状 病毒 审查 事件

3
Bạn có thể sử dụng chỉ href="javascript:"cho cùng một mục đích. Như đã nêu trong câu trả lời cho câu hỏi này , void(0)phần ban đầu được dành cho các phiên bản đầu tiên của trình duyệt nơi javascript:xử lý URI khác nhau. Nhưng bây giờ tôi thậm chí không thể tìm thấy một phiên bản mà tốc ký sẽ không hoạt động, ít nhất IE7 xử lý việc này một cách chính xác.
người dùng

1
Tôi cũng đã thấy href = "javascript: //", điều này có tốt hơn không?
lightaber

href = "javascript: //" không hoạt động đối với tôi void (0) hoạt động hoàn hảo.
Sandip

Câu trả lời:


1041

Các voidnhà điều hành đánh giá các biểu thức đã cho và trả về sau đó undefined.

Các voidnhà điều hành thường được sử dụng chỉ đơn thuần là để có được những undefinedgiá trị nguyên thủy, thường sử dụng “ void(0)” (đó là tương đương với “ void 0”). Trong những trường hợp này, biến toàn cục undefined có thể được sử dụng thay thế (giả sử nó chưa được gán cho giá trị không mặc định).

Một lời giải thích được cung cấp ở đây: voidnhà điều hành .

Lý do bạn muốn làm điều này với hrefliên kết là thông thường, một javascript:URL sẽ chuyển hướng trình duyệt sang phiên bản văn bản đơn giản về kết quả đánh giá JavaScript đó. Nhưng nếu kết quả là undefined, thì trình duyệt vẫn ở trên cùng một trang. void(0)chỉ là một kịch bản ngắn và đơn giản để đánh giá undefined.


9
có nghĩa là gì khi href được đưa ra một "giá trị nguyên thủy không xác định"?
omg

7
"thông thường một javascript: url sẽ chuyển hướng trình duyệt sang phiên bản văn bản đơn giản về kết quả của việc đánh giá javascript đó." Bạn có thể làm ví dụ ở đây không? Tôi chưa bao giờ thấy cách sử dụng như vậy.
omg

87
Một ví dụ về những gì phượng hoàng đang nói đến là <a href="javascript: dos somebody();"> LÀM NGAY BÂY GIỜ! </a>. Nếu một cái gì đó trả về false, thì việc nhấp vào liên kết sẽ khiến trình duyệt thoát khỏi trang và hiển thị "false". Tuy nhiên ... <a href="javascript: dos Something(); void(0)"> LÀM NGAY! </a> tránh được vấn đề. Hãy tiếp tục và dán javascript: 1 + 1; vào thanh địa chỉ trình duyệt của bạn. Trình duyệt sẽ hiển thị "2"
Breton

9
Bởi vì void là một toán tử đơn nguyên. Void không phải là một giá trị, nó cũng không phải là một chức năng. Nó cần một giá trị để hoạt động ở bên phải của nó, hoặc nó sẽ đưa ra một lỗi.
Breton

14
Hãy thử tìm trong bảng điều khiển lỗi? Nó chắc chắn ném một lỗi cú pháp. Đó là javascript không hợp lệ. Douglas crockford khuyên bạn nên tránh xa khoảng trống vì sự nhầm lẫn của toán tử / hàm / giá trị đơn nhất là quá tốn kém để giải quyết.
Breton

436

Ngoài câu trả lời kỹ thuật, javascript:voidcó nghĩa là tác giả đang làm sai.

Không có lý do chính đáng để sử dụng javascript:URL giả (*). Trong thực tế, nó sẽ gây nhầm lẫn hoặc lỗi nếu bất kỳ ai cũng nên thử những thứ như 'liên kết đánh dấu', 'liên kết mở trong một tab mới', v.v. Điều này xảy ra khá nhiều bây giờ mọi người đã quen với tab nhấp chuột giữa cho tab mới: nó trông giống như một liên kết, bạn muốn đọc nó trong một tab mới, nhưng hóa ra đó hoàn toàn không phải là một liên kết thực sự, và đưa ra các kết quả không mong muốn như trang trống hoặc lỗi JS khi nhấp vào giữa.

<a href="#">là một thay thế phổ biến mà có thể được cho là ít tệ hơn. Tuy nhiên, bạn phải nhớ return falsetừ onclicktrình xử lý sự kiện của mình để ngăn liên kết được theo dõi và cuộn lên trên cùng của trang.

Trong một số trường hợp, có thể có một nơi thực sự hữu ích để trỏ liên kết đến. Ví dụ: nếu bạn có một điều khiển, bạn có thể nhấp vào để mở ra một ẩn trước đó <div id="foo">, nó có ý nghĩa để sử dụng <a href="#foo">để liên kết với nó. Hoặc nếu có một cách không phải là JavaScript để làm điều tương tự (ví dụ: 'thispage.php? Show = foo' đặt foo hiển thị để bắt đầu), bạn có thể liên kết với điều đó.

Mặt khác, nếu một liên kết chỉ trỏ đến một số tập lệnh, nó không thực sự là một liên kết và không nên được đánh dấu như vậy. Cách tiếp cận thông thường sẽ là thêm onclickvào a <span>, <div>hoặc <a>không có hrefvà tạo kiểu theo cách nào đó để làm cho rõ ràng bạn có thể nhấp vào nó. Đây là những gì StackOverflow [đã làm tại thời điểm viết; bây giờ nó sử dụng href="#"].

Nhược điểm của điều này là bạn mất điều khiển bàn phím, vì bạn không thể tab trên một nhịp / div / trần-a hoặc kích hoạt nó với không gian. Việc này có thực sự là một bất lợi hay không phụ thuộc vào loại hành động mà phần tử dự định thực hiện. Bạn có thể, với một số nỗ lực, cố gắng bắt chước khả năng tương tác của bàn phím bằng cách thêm một tabIndexyếu tố và lắng nghe phím nhấn Space. Nhưng nó sẽ không bao giờ tái tạo 100% hành vi trình duyệt thực, nhất là vì các trình duyệt khác nhau có thể phản ứng với bàn phím khác nhau (chưa kể các trình duyệt không trực quan).

Nếu bạn thực sự muốn một yếu tố không phải là một liên kết nhưng có thể được kích hoạt như bình thường bằng chuột hoặc bàn phím, thì điều bạn muốn là một <button type="button">(hoặc <input type="button">cũng tốt như vậy, đối với nội dung văn bản đơn giản). Bạn luôn có thể sử dụng CSS để sắp xếp lại nó để nó trông giống như một liên kết hơn là một nút, nếu bạn muốn. Nhưng vì nó hoạt động giống như một nút bấm, đó là cách bạn thực sự nên đánh dấu nó.

(*: dù sao cũng là tác giả trang web. Rõ ràng chúng rất hữu ích cho bookmarklets. javascript:URL giả là một sự kỳ quái về khái niệm: một công cụ định vị không trỏ đến một vị trí, mà thay vào đó gọi mã hoạt động bên trong vị trí hiện tại. các sự cố cho cả trình duyệt và ứng dụng web và không bao giờ được phát minh bởi Netscape.)


7
Ngoài bài đăng xuất sắc của @bobince: Tôi đã thực hiện một số nghiên cứu vài tháng trước về khả năng điều hướng bàn phím chéo của hrefs, bao gồm các quirks và tác dụng phụ; một số bạn có thể thấy nó hữu ích: jakub-g.github.com/accessibility/onclick
jakub.g

2
@ThinkBonobo: SO đã thay đổi tại một số điểm kể từ năm 2009! Cập nhật.
bobince

59
Đây là một ý kiến ​​và không trả lời câu hỏi. void(0)là cần thiết trong nhiều trường hợp; "#" là một bản hack mang đến rất nhiều vấn đề (nó không hoạt động trong ứng dụng tôi đang viết, đã đưa tôi đến trang này).
felwithe

12
Tôi đồng ý với @feltwithe. Tại sao buộc người khác phải "Làm theo cách riêng"? Trong 15 năm lập trình tôi vẫn chưa thấy phương châm "nó phải luôn luôn được thực hiện theo cách này" không dẫn mọi người đến một mớ hỗn độn của chính họ
Steven de Salas

4
Sử dụng id phân đoạn là một ý tưởng tồi từ phối cảnh UX vì nó khiến tài liệu nhảy lên đầu trang trừ khi preventDefaultđược sử dụng. Vui lòng không làm điều đó trong trường hợp neo được sử dụng làm nút trên biểu mẫu.
Josh Habdas

124

Nó có nghĩa là nó sẽ không làm gì cả. Đó là một nỗ lực để có liên kết không 'điều hướng' ở bất cứ đâu. Nhưng đó không phải là cách đúng đắn.

Bạn thực sự chỉ nên return falsetrong onclicksự kiện, như vậy:

<a href="#" onclick="return false;">hello</a>

Thông thường, nó được sử dụng nếu liên kết đang thực hiện một số điều 'JavaScript-y'. Giống như đăng một hình thức AJAX, hoặc hoán đổi một hình ảnh, hoặc bất cứ điều gì. Trong trường hợp đó, bạn chỉ cần thực hiện bất kỳ chức năng nào đang được gọi là return false.

Tuy nhiên, để làm cho trang web của bạn hoàn toàn tuyệt vời, nói chung, bạn sẽ bao gồm một liên kết thực hiện cùng một hành động, nếu người duyệt nó chọn không chạy JavaScript.

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>

33
không không - trả về false sẽ dừng hành vi mặc định, vì vậy # sẽ không bao giờ xuất hiện
Magnar

22
giao thức javascript: url là một tiêu chuẩn defacto, không phải là một tiêu chuẩn thực sự. Vì vậy, href = "#" onclick = "trả về false;" là các tiêu chuẩn tuân thủ trong khi href = "javascript: void (0)" thì không, bởi vì không có tiêu chuẩn chính thức nào chỉ định những việc cần làm.
Breton

10
Trên hết, Douglas Crockford không thích khoảng trống, vì vậy jslint sẽ phàn nàn về điều đó. Về cơ bản, vì void là một toán tử, và không phải là một giá trị, nó khó hiểu như địa ngục và sinh ra nhiều câu hỏi như câu hỏi này. Tốt hơn để tránh nó hoàn toàn. haha
Breton

4
Brandon: xem phản hồi của brenton. Cách tôi đề xuất là được hỗ trợ nhiều nhất và như tôi đã nói trong phần thứ hai của bài đăng của tôi, trong một trang web 'phù hợp', bạn thậm chí sẽ không sử dụng '#', bởi vì bạn sẽ cung cấp các hệ thống dự phòng để xử lý việc thiếu javascript.
Trưa Tơ

19
+1 để bao gồm ví dụ hoàn toàn tuyệt vời . Ngay cả khi bạn không có dự phòng HTML tĩnh cho những gì bạn đang làm trong JavaScript, bạn luôn có thể làm một cái gì đó như thế nào <a href="enableJavaScriptToSeeMyCompletelyAwesomeSite.html" onclick="completelyAwesome();return false;">.
Grant Wagner

73

Có một sự khác biệt lớn trong hành vi của "#" so với javascript: void

"#" cuộn bạn lên TOP trang trong khi "javascript: void (0);" không làm.

Điều này rất quan trọng nếu bạn đang mã hóa các trang động. Người dùng không muốn quay lại đầu trang chỉ vì anh ta nhấp vào một liên kết trên trang.


26
@Salvin: Hành vi cuộn từ đầu đến cuối trang có thể bị loại bỏ bằng cách quay lại falsetrình xử lý sự kiện : onclick="doSomething();return false;", hoặc nếu doSomething()trả về false, bạn có thể sử dụng onclick="return doSomething();".
Grant Wagner

41
@GrantWagner - Hoặc, 5 năm sau , e.preventDefault().
phân chia

1
Bạn có thể muốn chỉnh sửa / xóa câu trả lời "#"này không di chuyển đến phía trên khi bạn trả về false.
Navin

4
@Navin bạn đúng, nhưng đó là một thực tế lỗi thời. Nhận xét bằng cách phân tích được coi là cách chính xác bây giờ.
Tim Seguine

66

Đây là một phương pháp rất phổ biến để thêm các hàm JavaScript vào các liên kết HTML.
Ví dụ: các [Print]liên kết mà bạn thấy trên nhiều trang web được viết như thế này:

<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>

Tại sao chúng ta cần hreftrong khi onclickmột mình có thể hoàn thành công việc? Bởi vì khi người dùng di chuột qua văn bản 'In' khi không có href, con trỏ sẽ thay đổi thành dấu mũ (ꕯ) thay vì con trỏ (👆). Chỉ có hreftrên một athẻ xác nhận nó là một siêu liên kết.

Một thay thế cho href="javascript:void(0);" , là việc sử dụng href="#". Sự thay thế này không yêu cầu bật JavaScript trong trình duyệt của người dùng, vì vậy nó tương thích hơn.


7
không có gì hữu ích nếu tắt javascript.
Jasen

12
Bạn không cần hrefphải lấy con trỏ tay trỏ; tất cả chỉ là một chút CSS.
John Montgomery

1
Tại sao bạn không đặt chức năng JavaScript trong href thay vì onclick?
Siddhartha Gandhi

2
Tôi đồng ý với @Sid - nếu bạn đang sử dụng nó để kích hoạt chức năng javascript thì <a href="javascript:callPrintFunction()">sẽ sạch hơn (mặc dù nó có thể là một buttonthay vì anchor nếu nó không thực sự đưa bạn đến bất cứ đâu).
DaveMongoose

href="#"có thể dẫn đến những bất ngờ khó chịu - như các yêu cầu xhr bị hủy bỏ, tình cờ được gọi khi nhấp vào liên kết đó. Gần đây tôi đã có một thời gian khó khăn để gỡ lỗi một trang web đã hủy yêu cầu đăng nhập oidc, nếu người dùng tình cờ ở một địa chỉ không phải là gốc của trang web. #href đã khiến nó tải lại địa chỉ trước khi yêu cầu xhr hoàn thành.
JustAMartin

44

Bạn phải luôn có một href trên a thẻ. Gọi một hàm JavaScript trả về 'không xác định' sẽ hoạt động tốt. Vì vậy, sẽ liên kết đến '#'.

Các thẻ neo trong Internet Explorer 6 không có href không nhận được a:hover áp dụng kiểu.

Vâng, nó là khủng khiếp và là một tội ác nhỏ chống lại loài người, nhưng nói chung, Internet Explorer 6 nói chung cũng vậy.

Tôi hi vọng cái này giúp được.

Internet Explorer 6 thực sự là một tội ác lớn chống lại loài người.


25

Điều đáng nói là đôi khi bạn sẽ thấy void 0 khi kiểm tra không xác định, đơn giản vì nó yêu cầu ít ký tự hơn.

Ví dụ:

something === undefined

so với

something === void 0

Một số phương pháp thu nhỏ thay thế không xác định bằng void 0 vì lý do này.


10
Một ví dụ đáng chú ý là TypeScript ( ví dụ trực tiếp ), nó biên dịch các giá trị tham số mặc định để kiểm tra void 0. Sự khác biệt 3 ký tự cộng lại nhanh chóng khi nhiều phương thức đang sử dụng các giá trị param mặc định.
John Weisz

1
"Một số phương pháp thu nhỏ thay thế không xác định bằng void 0 vì lý do này." Cuối cùng tôi cũng hiểu! Cảm ơn @squall đã trả lời thấu đáo.
Ahmed Mahmoud

22

Việc sử dụng javascript:void(0)có nghĩa là tác giả của HTML đang sử dụng sai phần tử neo thay cho phần tử nút.

Các thẻ neo thường bị lạm dụng với sự kiện onclick để tạo các nút giả bằng cách đặt href thành "#" hoặc "javascript: void (0)" để ngăn trang làm mới. Các giá trị này gây ra hành vi không mong muốn khi sao chép / kéo liên kết, mở liên kết trong tab / cửa sổ mới, đánh dấu trang và khi JavaScript vẫn đang tải xuống, lỗi hoặc bị vô hiệu hóa. Điều này cũng chuyển tải ngữ nghĩa không chính xác cho các công nghệ hỗ trợ (ví dụ: trình đọc màn hình). Trong những trường hợp này, nên sử dụng <button>thay thế. Nói chung, bạn chỉ nên sử dụng một neo để điều hướng bằng một URL thích hợp.

Nguồn: Trang MDN<a> .


4
+1 để hiển thị html ngữ nghĩa cho một câu hỏi cũ ... Liên kết các địa điểm, các nút làm mọi thứ - nếu chúng ta không muốn nó trông giống như một nút, chúng ta chỉ nên xóa kiểu dáng.
kevlarr

Ngoại lệ lớn cho điều này sẽ là bản đồ hình ảnh, có thể cần phải thực thi JavaScript; và vì nó không phải là một nút, nó là một liên kết có giới hạn đa giác, đây là cách "duy nhất".

17

voidlà một toán tử được sử dụng để trả về một undefinedgiá trị để trình duyệt sẽ không thể tải một trang mới.

Các trình duyệt web sẽ thử và lấy bất cứ thứ gì được sử dụng làm URL và tải nó trừ khi đó là hàm JavaScript trả về null. Ví dụ: nếu chúng tôi nhấp vào một liên kết như thế này:

<a href="javascript: alert('Hello World')">Click Me</a>

sau đó một thông báo cảnh báo sẽ hiển thị mà không tải một trang mới và đó là vì đó alertlà một hàm trả về giá trị null. Điều này có nghĩa là khi trình duyệt cố tải một trang mới, nó thấy null và không có gì để tải.

Một điều quan trọng cần lưu ý về toán tử void là nó yêu cầu một giá trị và không thể sử dụng chính nó. Chúng ta nên sử dụng nó như thế này:

<a href="javascript: void(0)">I am a useless link</a>

1
Tôi đã thấy mọi người sử dụng javascript: null thay vì void ... nhưng đó là một vấn đề. Chrome null hoạt động, trong Firefox, nó cố tải trang null. Vui mừng bạn cập nhật. Lỗi thú vị.
Gavin Pickin

Tôi đã tìm thấy một số cách sử dụng khác trong một cơ sở mã như javascript: null nhưng với javascript: null () không xác định, vì vậy nó hoạt động.
Gavin Pickin

1
Vì vậy, về cơ bản, nó giống như prevendDefault của jquery và trả về false?
Robert Rocha

16

Để hiểu khái niệm này, trước tiên bạn nên hiểu toán tử void trong JavaScript.

Cú pháp của toán tử void là: void «expr»đánh giá expr và trả về không xác định.

Nếu bạn thực hiện void như một hàm, nó sẽ trông như sau:

function myVoid(expr) {
    return undefined;
}

Toán tử void này có một cách sử dụng quan trọng đó là - loại bỏ kết quả của biểu thức.

Trong một số tình huống, điều quan trọng là trả về không xác định trái ngược với kết quả của một biểu thức. Sau đó void có thể được sử dụng để loại bỏ kết quả đó. Một tình huống như vậy liên quan đến javascript: URL, nên tránh các liên kết, nhưng rất hữu ích cho bookmarklets. Khi bạn truy cập một trong những URL đó, nhiều trình duyệt sẽ thay thế tài liệu hiện tại bằng kết quả đánh giá các URL Nội dung trực tuyến, nhưng chỉ khi kết quả không được xác định. Do đó, nếu bạn muốn mở một cửa sổ mới mà không thay đổi nội dung hiện đang hiển thị, bạn có thể làm như sau:

javascript:void window.open("http://example.com/")

2
Cảm ơn vì đã làm rõ chính xác đối số 'void' là gì! Không rõ ràng trong các câu trả lời khác, chỉ có điều "void mất một đối số".
dbeachy1

Câu trả lời tốt nhưng một chi tiết, việc thực hiện void sẽ giống như: function myVoid(expr) { expr(); return undefined; } Bạn quên add expr ();
Juanma Menendez

1
@Juanma Menendez: không đúng exprđã được đánh giá khi myVoid()được gọi ( kết quả của biểu thức đó được truyền dưới dạng tham số)
Udo G

@UdoG Tôi tò mò, làm sao bạn biết người đàn ông đó? bạn có thể vui lòng giải thích.
Juanma Menendez

@JuanmaMenendez: các biểu thức trong các tham số hàm luôn được ước tính trước khi gọi chính hàm đó. Xin lỗi, tôi không có tài liệu nào làm rõ điều đó nhưng hãy tự thử: function() { alert("foo"); }là một biểu thức hợp lệ . void(function() { alert("foo"); })trả về undefinedkhông hiển thị cảnh báo, trong khi myVoid(function() { alert("foo"); })đó (trong phiên bản của bạn, không phải là của Gopal Yadav ).
Udo G

14

Các voidnhà điều hành đánh giá các biểu thức đã cho và sau đó trả về xác định. Nó tránh làm mới trang.


9

Các nhà phát triển web sử dụng javascript:void(0)vì đó là cách dễ nhất để ngăn chặn hành vi mặc định của athẻ. void(*anything*)trả về undefinedvà nó là một giá trị giả. và trả về giá trị giả giống như return falsetrong onclicktrường hợp athẻ ngăn hành vi mặc định của nó.

Vì vậy, tôi nghĩ javascript:void(0)là cách đơn giản nhất để ngăn chặn hành vi mặc định của athẻ.


8

Một liên kết phải có một mục tiêu HREF được chỉ định để cho phép nó trở thành một đối tượng hiển thị có thể sử dụng được.

Hầu hết các trình duyệt sẽ không phân tích JavaScript nâng cao trong một

<A HREF="" 

thẻ như:

<A href="JavaScript:var elem = document.getElementById('foo');" 

bởi vì thẻ HREF trong hầu hết các trình duyệt không cho phép khoảng trắng hoặc sẽ chuyển đổi khoảng trắng thành% 20, tương đương HEX của SPACE, làm cho JavaScript của bạn hoàn toàn vô dụng với trình thông dịch.

Vì vậy, nếu bạn muốn sử dụng thẻ A HREF để thực thi JavaScript nội tuyến, bạn phải chỉ định giá trị hợp lệ cho HREF FIRST không quá phức tạp (không chứa khoảng trắng), sau đó cung cấp JavaScript trong thẻ thuộc tính sự kiện như OnClick , OnMouseOver, OnMouseOut, v.v.

Câu trả lời điển hình là làm một cái gì đó như thế này:

<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>

Điều này hoạt động tốt nhưng nó làm cho trang nhảy lên trên cùng vì dấu thăng / thẻ băm bảo nó làm như vậy.

Chỉ cần cung cấp một dấu thăng / thẻ băm trong thẻ A HREF thực sự chỉ định neo gốc, theo mặc định, luôn luôn là đầu trang, bạn có thể chỉ định một vị trí khác bằng cách chỉ định thuộc tính NAME bên trong thẻ HREF.

<A NAME='middleofpage'></A>

Sau đó, bạn có thể thay đổi thẻ A HREF của mình để chuyển sang 'middleofpage' và thực thi JavaScript trong sự kiện OnClick, một khi điều đó xảy ra như vậy:

<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>

Sẽ có NHIỀU lần bạn không muốn liên kết đó nhảy xung quanh, vì vậy bạn có thể thực hiện hai điều:

<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>

Bây giờ nó sẽ không đi đến đâu khi được nhấp, nhưng nó có thể khiến trang tự định tâm lại từ chế độ xem hiện tại của nó. Điều này không đẹp. Cách tốt nhất để cung cấp javascript nội tuyến, sử dụng A HREF, nhưng không phải thực hiện bất kỳ điều nào ở trên là gì? JavaScript: void (0);

<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>

Điều này báo cho trình duyệt đi NGAY BÂY GIỜ, nhưng thay vào đó thực thi JavaScript hợp lệ: void (0); đầu tiên hoạt động trong thẻ HREF vì nó không chứa khoảng trắng và sẽ không được phân tích cú pháp dưới dạng URL. Nó thay vào đó sẽ được chạy bởi trình biên dịch. VOID là một từ khóa, khi được cung cấp với tham số 0 trả về UNDEFINED, không sử dụng thêm bất kỳ tài nguyên nào để xử lý giá trị trả về sẽ xảy ra mà không chỉ định 0 (nó thân thiện với quản lý bộ nhớ / hiệu năng hơn).

Điều tiếp theo xảy ra là OnClick được thực thi. Trang không di chuyển, không có gì xảy ra hiển thị.


+1 để giải thích tất cả các cách khác nhau mà một neo như thế này có thể được xử lý. Tuy nhiên, tôi cho rằng một <a>yếu tố phải luôn đi đâu đó ; nếu nó chỉ trên trang để thực thi một số javascript, thì <button>nên sử dụng một thay thế. Việc sử dụng <button>là cả hai ngữ nghĩa hơn, và tránh cho bạn khỏi toàn bộ cuộc tranh luận về những gì cần hack vào một mỏ neo href. Chỉnh sửa: có vẻ như câu trả lời của @Ronnie Royston bên dưới đã có tranh luận này.
Rabadash8820

1

JavaScript: URL sang một bên; đây là nơi void có thể hữu ích để viết mã ngắn hơn.

var error1 = false,
    error2 = false,
    error3 = false;

function error1() {

  error1 = true;
}

function myFunction() {

  // You can easily return and call a function at once, if you don't care about myFunction's return value
  if (!someCondition1)
    return error1();

  // What if you want to set a value first?
  if (!someCondition2) {
    error2 = true;
    return
  }

  // Shortest way to return and set a value at once
  if (!someCondition3)
    return void(error3 = true);

  // More code goes here
}

Sẽ thật tuyệt nếu những người downvoters ít nhất có thể nói lý do tại sao họ downvot. Tôi biết đó không phải là chủ đề của câu hỏi, nhưng tôi đang nghĩ về tất cả những người đến đây từ kết quả tìm kiếm.
Maciej Krawchot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.