Why Do We Use javascript:void(0) in Coding?
When you look at HTML and JavaScript code, you may come across a link like this:
At first glance, this looks strange. Why not just use #
or leave the link empty? The answer lies in how javascript:void(0)
works. In this blog, we’ll explore what it means, why it’s used, when to avoid it, and modern alternatives.
What Does javascript:void(0) Mean?
In JavaScript, the void
operator evaluates an expression and returns undefined
.
For example:
So when you use javascript:void(0)
, you’re telling the browser to:
-
Execute the expression
void(0)
-
Return nothing (
undefined
) -
Stay on the same page without reloading or navigating
That’s why developers often use it in links (<a>
tags) when they need a clickable element but don’t want the browser to redirect anywhere.
Why Do Developers Use javascript:void(0)?
There are a few reasons why you’ll see this code in web development:
1. Preventing Page Reload
If you use a normal <a href="#">
link, the browser reloads the page or scrolls to the top. Using javascript:void(0)
ensures that the page stays in place while the JavaScript code executes.
2. Placeholder Links
Sometimes developers need to create navigation menus or clickable elements without linking to an actual page. Instead of using a dummy URL, they use javascript:void(0)
to make the link functional but non-navigable.
Example:
When clicked, the onclick
event triggers without reloading the page.
3. Legacy Code Practices
Before modern JavaScript methods like event.preventDefault()
became popular, javascript:void(0)
was the standard way to stop link navigation. That’s why you still see it in older websites and templates.
javascript:void(0) vs #
You might be wondering: why not just use #
instead of javascript:void(0)
?
Let’s compare:
Feature | href="#" |
href="javascript:void(0)" |
---|---|---|
Changes URL | Adds # at the end |
Does nothing |
Scrolls page | Scrolls to top | No scrolling |
Reload behavior | Can reload/scroll | Prevents reload |
Best for | Quick placeholder | Clickable JS actions |
So while #
works as a placeholder, it can cause unwanted page scrolling. That’s why developers often prefer javascript:void(0)
.
Real-World Use Cases
Here are some scenarios where javascript:void(0)
is used:
-
Navigation Menus
Used when the link expands a dropdown instead of navigating.
-
AJAX Calls
The link triggers an AJAX request without leaving the page.
-
UI Components
In modal popups, sliders, or tabs where links act as triggers instead of actual navigation.
Modern Alternatives
While javascript:void(0) works, modern development offers cleaner options:
1. event.preventDefault()
This prevents the default link action but is more readable.
2. Use <button> Instead
Buttons are more semantic and are designed for actions, not navigation.
3. JavaScript Event Listeners
Instead of inline code:
This separates structure (HTML) from behavior (JavaScript), improving code maintainability.
Should You Still Use javascript:void(0)?
-
✅ It works and is widely supported.
-
✅ Useful in older templates or quick prototyping.
-
❌ Not recommended for modern projects.
-
❌ Can make code harder to read and maintain.
If you’re building a new website, use semantic HTML (<button>
) or preventDefault() instead.
FAQs About javascript:void(0)
1. Is javascript:void(0) bad practice?
It’s not inherently bad, but modern alternatives like preventDefault()
or <button>
are cleaner and more semantic.
2. Does javascript:void(0) affect SEO?
No, it does not directly affect SEO. However, excessive use in navigation menus without proper links can reduce crawlability for search engines.
3. Can I replace javascript:void(0) with #?
Yes, but #
may scroll the page or reload. If you want a “do nothing” link, javascript:void(0)
is safer.
4. Is it still used today?
Yes, but mostly in older codebases or quick demos. Modern frameworks (React, Angular, Vue) rely on event handlers instead.
Conclusion
javascript:void(0)
has been a long-standing trick in web development to create clickable elements that don’t reload the page or change the URL. While it still works, today’s best practices encourage developers to use cleaner and more semantic methods like event.preventDefault()
or <button>
.
So next time you see javascript:void(0)
in code, you’ll know it’s simply a way of saying:
👉 “Run JavaScript, but don’t go anywhere!”