Why use void(0)?
我们假设您必须创建一个没有有意义的href的JavaScript链接。 (我知道这种做法值得怀疑。)在这种情况下,为什么有这么多人使用......
知道void(0)评估为undefined,我可以简单地使用以下逻辑吗?
-
您可以实际重新定义undefined,而void对于javscript链接中的非平凡代码非常有用。
-
@Tim实际上,你可以在ES3中。这已在ES5中更改 - 您无法再在全局范围内重新定义undefined,尝试这样做将无声地失败。
-
我通常喜欢My link</a>。只记得在处理程序中添加event.preventDefault()。
-
@ FABR&#237; cioMatt&#233;我以为那只是严格模式。
-
@RocketHazmat如果你不会阻止JS中的默认行为这个方法会将#添加到url +会将页面滚动到顶部
-
即使是较小的,你也可以使用: My link </a>
-
@hawkharris ....好奇,即使使用Strict DocType。为什么有必要创建一个不链接的锚。在我看来,您正在创建无法链接到其他站点的可点击文本。而创建一个会更有意义
-
@JohnHartsock有时候人们用它来设置一个像锚标签一样的文本,或者只是制作它,然后留下来实现它。
-
这个问题的第一个答案值得一读:[stackoverflow.com/questions/134845/… [1]:stackoverflow.com/questions/134845/…
-
@Mohammad Areeb Siddiqui ......我理解你的解释,但我会说在我看来,使用像这样的标签是黑客攻击。利用HTML的正确语义很重要。锚(标签)应该用于链接,而不是样式,应该使用CSS实现样式。
-
这绝对是一个黑客攻击,但在考虑单页面webapps时,它是一个语义灰色区域,点击链接可以从客户端动态地为客户端提供新页面,而不是从服务器请求新资源。特别是如果它是有状态的,那么填充的href会产生误导。
为什么人们使用void(x)而不是undefined?
那么两个都可以工作,但undefined是一个保留变量,它的值可以改变:
这将给出true而不是undefined。
其中void()是始终返回undefined的关键字。无论你在关键字中放置什么:
void('return false plox'); //will return false
关于这个主题的更多信息:'void 0`是什么意思?
的jsfiddle
请注意,不同于它仍然充当链接并将重定向您,在此之前的方法将取消事件(类似于event.preventDefault)。
-
"undefined是一个保留变量,它的值可以改变",真的吗? 你能澄清一下吗? 我刚刚在Chrome控制台中进行了快速测试:undefined = true; undefined,但undefined仍然是undefined。
有三个不同,
void评估给定的表达式,然后返回undefined
window.undefined是可写的,而void运算符将始终返回undefined
void字符较少,如果您使用了很多字符,则会产生较小的代码
此外,如果您使用void返回undefined,则可以使用void 0,相当于void(0)。