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)
vsjavascript:返回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>