帮帮我理解javascript:void(null)

Ani*_*mde 13 javascript

有人可以帮我这个javascript:void(null)我发现它在链接按钮中使用如下

<a onclick="ProcessResponse()" href="javascript:void(null)" >Accept Data</a>
Run Code Online (Sandbox Code Playgroud)

And*_*y E 16

void是一个JavaScript运算符,但有时会被误认为是函数,因为它后面的括号常见使用.预期目的void是在不返回值的情况下计算表达式.因此,任何表达都可以被void编辑,它不一定是null,而且经常你看到void(0)或不经常,void 0.

javascript:href属性中使用时,将评估以下表达式并返回其结果.通过在浏览器地址框中输入以下内容即可看出:

javascript:prompt("test");
Run Code Online (Sandbox Code Playgroud)

在显示的框中键入任何内容,然后按Enter /单击确定.您会注意到该页面将消失,您输入的内容将会显示.现在看看如果我们添加void 0;:

javascript:prompt("test"); void 0;
Run Code Online (Sandbox Code Playgroud)

在提示中单击"确定"后,没有任何反应.这void 0是轻松的工作,它返回undefined,所以浏览器什么都不做.这也适用href于链接(随意尝试).整个事情甚至可以写成javascript:void prompt("test");.

正如其他人所提到的,最好使用return false;事件处理程序而不是void在href中使用.实际上,建议不要javascript:href属性中使用它.


Sar*_*raz 6

基本上发生的是调用onclick该函数ProcessResponse()并将其href设置javascript:void(null)为禁用链接的默认行为.

大多数开发人员也习惯于写这个:

<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a>
Run Code Online (Sandbox Code Playgroud)

例:

假设我们已建立此链接:

<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a>
Run Code Online (Sandbox Code Playgroud)

请注意,href设置为www.google.com但是当您实际单击该链接时,它只会调用该ProcessResponse()函数而不会进入,www.google.com因为return falseput after ProcessResponse()会禁用链接的默认行为www.google.com.您发布的链接的情况也是如此.

  • 这在技术上是不正确的.它不会"禁用链接的默认行为",它更像是一个空链接.试试`javascript:`或`javascript:undefined`. (4认同)
  • 不你不是.允许我扩展引号 - *`href`设置为`javascript:void(null)`以禁用链接*的默认行为. - 这是不正确的.有没有人闻到袜子木偶? (4认同)
  • @Andy E的头:我说的是href设置为#. (2认同)