Why use void(0)?

html, javascript

Solution

Why people use `void(x)` instead of `undefined`?

Well both would work but `undefined` is a reserved variable and its value can be changed:

undefined = true;

This will give true instead of undefined.

Where as `void()` is a keyword which always returns undefined. Whatever you place inside the keyword:

`void('return false plox'); //will return false`

More info on this topic here: What does `void 0` mean?

jsFiddle

Note that `<a href="#"> ` is not the same as it still acts as a link and will redirect you, where as the previous methods will cancel the event(similar to `event.preventDefault`).

Update

Since ECMAScript 5, the global `undefined` variable is no longer directly editable (See for example Mozilla docs). It now simply shadows the global variable as some have noted.

Problem

Let's assume for a moment that you must create a JavaScript link that doesn't have a meaningful `href`. (I know that this practice is questionable.) In this case, why do so many people use... ``` <a href="javascript:void(0);"> My link </a> ``` Knowing that `void(0)` evaluates to `undefined`, can I simply use the following logic? ``` <a href="javascript:undefined;"> My link </a> ```

Original source

Related problems