<a href="javascript:void(0)" id="loginlink">login</a>
我见过很多次这样的威胁,但我不知道这到底意味着什么。
<a href="javascript:void(0)" id="loginlink">login</a>
我见过很多次这样的威胁,但我不知道这到底意味着什么。
当前回答
要理解这个概念,首先应该理解JavaScript中的void运算符。
void运算符的语法为:void«expr»,它计算expr并返回undefined。
如果将void实现为函数,则如下所示:
function myVoid(expr) {
return undefined;
}
这个void运算符有一个重要的用法,那就是丢弃表达式的结果。
在某些情况下,返回undefined而不是表达式的结果是很重要的。然后可以使用void来丢弃该结果。一种这样的情况涉及javascript:URL,对于链接应该避免使用javascript,但对于bookmarklets很有用。当您访问其中一个URL时,许多浏览器会将当前文档替换为评估URL“内容”的结果,但前提是结果未定义。因此,如果要在不更改当前显示内容的情况下打开新窗口,可以执行以下操作:
javascript:void window.open("http://example.com/")
其他回答
void运算符计算给定的表达式,然后返回undefined。它避免了刷新页面。
据我所见,void运算符在JavaScript中有3种常见用法。您所指的<a href=“javascript:void(0)”>是使<a>标记成为no-op的常见技巧。有些浏览器根据是否有a href来区别对待<a>标记,因此这是一种创建与a href链接的方法,但什么都不做。
void运算符是一个接受参数并返回undefined的一元运算符。因此var x=空隙42;表示x===未定义。这很有用,因为在严格模式之外,undefined实际上是一个有效的变量名。因此,一些JavaScript开发人员使用void 0而不是undefined。理论上,您也可以执行<a href=“javascript:undefined”>,这与void(0)相同。
void运算符计算给定的表达式,然后返回undefined。void运算符通常仅用于获取未定义的原语值,通常使用“void(0)”(相当于“void 0”)。在这些case,全局变量未定义可以使用(假设它有未分配给非默认值值)。
这里提供了一个解释:void运算符。
您希望使用链接的href进行此操作的原因是,通常javascript:URL会将浏览器重定向到评估该javascript结果的纯文本版本。但如果结果未定义,则浏览器将保持在同一页面上。void(0)只是一个短而简单的脚本,其计算结果为undefined。
Web开发人员使用javascript:void(0),因为这是防止标记默认行为的最简单方法。void(*anything*)返回undefined,它是一个错误的值。返回falsy值类似于在标记的onclick事件中返回false,该事件阻止其默认行为。
所以我认为javascript:void(0)是防止标记默认行为的最简单方法。
值得一提的是,检查undefined时有时会看到void 0,因为它需要更少的字符。
例如:
if (something === undefined) {
doSomething();
}
对比:
if (something === void 0) {
doSomething();
}
为此,某些缩小方法将undefined替换为void 0。