void 运算符会对给定的表达式进行求值,然后直接返回 undefined
void 运算符通常只用于获取 undefined 的原始值,一般使用 void(0)(等同于 void 0)。在上述情况中,也可以使用全局变量undefined 来代替(假定其仍是默认值)。
<script> console.log(void(console.log("OK"))); </script> |
这段代码的运行结果为:
OK
undefined
一般我个人称 javascript:void(0)死链接
而javasccript:;是为空链接,其实他也也是直接返回的undefined,而前者是计算完毕之后返回undefined
个人习惯使用前者,好像感觉后置更快点,我感觉在前端就无所谓了
-----------------------------------------------------------------------
当用户点击一个以 javascript: URI 时,浏览器会对冒号后面的代码进行求值,然后把求值的结果显示在页面上,这时页面基本上是一大片空白,这通常不是我们想要的。只有当这段代码的求值结果是 undefined 的时候,浏览器才不会去做这件傻事,所以我们经常会用 void 运算符来实现这个需求
看代码:
<a href="javascript:void(0);"> 这个链接点击之后不会做任何事情,如果去掉 void(), 点击之后整个页面会被替换成一个字符 0。 </a> <a href="javascript:void(document.body.style.backgroundColor=‘green‘);"> |
参考内容:
https://segmentfault.com/q/1010000002435291
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/void
http://www.koikikukan.com/archives/2015/03/11-002222.php
额外再说一点:关于<a href="#"></a>
#包含了一个位置信息
默认的锚是#top 也就是网页的上端
如果想完成跟右侧等价的写法,我提供了三种方式进行参考
<a href="#" onclick="return false;">href</a>
<a href="javascript:return false;" onclick="调用的js方法">href</a>
<a href="####">这里是空链接,没有经过测试</a>
还有其他方式:这里就直接上代码了
<script>
function foo() {
// ...
}
</script>
<a href="http://user-domain/" onclick="foo();return false">test</a>
-----第二种方式
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(function(){
$(‘#test‘).click(function(e){
e.preventDefault();
// return false;
});
});
</script>
<a href="http://user-domain/" id="test">test</a>