Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的void(0)澄清?_Javascript_Html_Void - Fatal编程技术网

Javascript中的void(0)澄清?

Javascript中的void(0)澄清?,javascript,html,void,Javascript,Html,Void,读完这两本书后: , 我还有一些问题 我读过 窗口。未定义的可以在此处被覆盖void运算符将返回未定义的值始终 但我注意到的例子是MDN中的一个: <a href="javascript:void(0);">Click here to do nothing</a> 这就引出了另一个问题:(在Hrefcontext!): javascript:void(0)vsjavascript:返回false 有什么区别 也有 function doWork() { retu

读完这两本书后:

,

我还有一些问题

我读过
窗口。未定义的
可以在此处被覆盖
void
运算符将返回未定义的值
始终

但我注意到的例子是MDN中的一个:

<a href="javascript:void(0);">Click here to do nothing</a>
这就引出了另一个问题:(在
Href
context!):

javascript:void(0)
vs
javascript:返回false

有什么区别

也有

function doWork() {
    return void( 0 );
}
正是


谢谢。

这将无法正常工作:

href="javascript:return false;"
因为您不在函数中。你在想:

onclick="return false;"
这是正确的,因为
返回false放置在函数中。
false
值告诉
onclick
以防止元素的默认行为

要使
return
语句在
href
属性中工作,您需要一个完整的函数

href="javascript:(function() { return false; })();"
但是这太长太难看了,正如评论所指出的那样,
href
中的JavaScript通常是不受欢迎的

编辑:我刚学到一些东西。使用上述非
未定义的
表达式似乎可以用返回值替换元素(至少在Firefox中是这样)。我并不完全熟悉在
href
中使用JavaScript的全部后果,因为我从来没有这样做过


是的,这个:

return undefined;
返回与此完全相同的内容:

return void 0;
只要
未定义的
变量没有被其他值重新定义或隐藏

但是,虽然它们可能返回相同的东西,但说它们是相同的东西并不完全准确,因为:

  • undefined
    是一个全局变量,其默认值为
    undefined
    原语

  • void
    是一个一元运算符,它将用
    未定义的
    原语替换其操作数的返回值


因此,它们都会导致
未定义
原语,但它们的方式非常不同。

如果将
javascript:something
指定为
href
属性的值,则当有人激活该链接时,将对该
something
进行计算

将检查此评估的结果:如果其
typeof
评估为
'undefined'
字符串,则不会发生任何事情;否则,页面将重新加载评估结果作为其内容:

<a href="javascript: void(0);">Nothing to see here, move along...</a>
<a href="javascript: undefined;">No, still nothing...</a>
<a href="javascript: prompt('Where would you like to go today?');">Check this out!</a>
在这里,我们在第一个环节仍然一无所获。但第二个链接将在IE8中显示333.:)

我想这也回答了你的第二个问题:typeof void(0)将始终
未定义的
<如果有人认为将龙重新分配到
窗口是个好主意,那么code>typeof undefined
可能会给你带来龙。undefined


。。。是的,
javascript:returnfalse是错误的:您不能从非函数环境返回。您可能会将其与
onclick:returnfalse
混淆,但这完全是另一回事。)

你的文章到处都是,你的“请回答两个问题”也无助于澄清问题…@BoltClock对不起,我应该把这个问题分成两个不同的问题吗?理想情况下,你根本不会在href属性中使用javascript@这是一个MDN示例!MDN说你不应该使用它。:)“但是,请注意,javascript:pseudo协议不受其他替代方案的鼓励,例如不引人注目的事件处理程序。”@RoyiNamir不,请查看错误控制台。仅仅因为javascript失败,并不意味着它可以工作。是的,我查看了它,发现了一些错误——感谢您给出了一个很好的答案。顺便说一句,我认为
onclick=“return false;”“
不仅可以防止默认行为,还可以停止事件的传播(冒泡)
href=“#”
只是指向空哈希的链接,通常默认行为是跳转到页面顶部;没有reloading@Chad:这只是jQuery(stopPropagation)中的内容。jQuery的行为是非标准的。@RoyiNamir:这只是一种使
元素显示为链接(通常为蓝色和下划线)的方法,而无需将
href
引导到任何地方。如果没有
href
,则
文本将与任何其他文本一样,但如果使用
href
,当您单击它时,浏览器会想带您去某个地方。这只是一个黑客行为,所以你可以看到链接的外观,但不能看到行为。我知道写这篇文章要花很多时间。)希望所有这些事情都能帮助别人。)
return void 0;
<a href="javascript: void(0);">Nothing to see here, move along...</a>
<a href="javascript: undefined;">No, still nothing...</a>
<a href="javascript: prompt('Where would you like to go today?');">Check this out!</a>
<a href="javascript: window.undefined = 333; void(0);">What happens here?</a>
<a href="javascript: window.undefined = 333; undefined;">And here?</a>