我们假设您必须创建一个没有意义href
的JavaScript链接。 (我知道这种做法值得怀疑。)在这种情况下,为什么这么多人会使用......
<a href="javascript:void(0);"> My link </a>
知道void(0)
评估为undefined
,我可以简单地使用以下逻辑吗?
<a href="javascript:undefined;"> My link </a>
答案 0 :(得分:4)
为什么人们使用void(x)
代替undefined
?
两者都可以,但undefined
是一个保留变量,其值可以更改:
undefined = true;
这将给出true而不是undefined。
void()
是一个关键字,它总是返回undefined。无论你放在关键字中的是什么:
void('return false plox'); //will return false
此处有关此主题的更多信息:What does `void 0` mean?
请注意,<a href="#">
与它仍然充当链接并且会重定向您的情况不同,之前的方法会取消事件(类似于event.preventDefault
)。
答案 1 :(得分:1)
有三个不同之处,
void
评估给定的表达式,然后返回undefined
window.undefined
是可写的,而void
运算符将始终返回undefined
void
字符较少,如果您使用了很多代码,则会产生较小的代码此外,如果您使用void
返回undefined
,则可以使用void 0
,相当于void(0)
。