为什么要使用void(0)?

haw*_*ris 5 html javascript

让我们假设您必须创建一个没有意义的JavaScript链接href.(我知道这种做法值得怀疑.)在这种情况下,为什么有这么多人使用......

<a href="javascript:void(0);"> My link </a> 
Run Code Online (Sandbox Code Playgroud)

知道void(0)评估结果undefined,我可以简单地使用以下逻辑吗?

<a href="javascript:undefined;"> My link </a>
Run Code Online (Sandbox Code Playgroud)

nkm*_*mol 3

为什么人们使用void(x)而不是undefined

两者都可以工作,但undefined都是保留变量,其值可以更改:

undefined = true;
Run Code Online (Sandbox Code Playgroud)

这将给出 true 而不是 undefined。

其中 as是一个始终返回 undefined 的void()关键字。无论您在关键字中放置什么:

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

有关此主题的更多信息,请参见:“void 0”是什么意思?

jsFiddle


请注意,这<a href="#"> 并不相同,因为它仍然充当链接并会重定向您,而之前的方法将取消事件(类似于event.preventDefault)。

更新

自 ECMAScript 5 起,全局undefined变量不再可直接编辑(例如,请参阅 Mozilla 文档)。正如一些人所指出的,它现在只是隐藏了全局变量。

  • “‘undefined’是一个保留变量,它的值可以改变”,真的吗?你能澄清一下吗?我刚刚在 Chrome 控制台中进行了快速测试:`undefined = true; 未定义`,但`未定义`仍然是`未定义`。 (5认同)