[理论篇]一.JavaScript中的死连接`javascript:void(0)`和空连接`javascript:;`
void 运算符
void 运算符会对给定的表达式进行求值,然后直接返回 undefined
void 运算符通常只用于获取 undefined
的原始值,一般使用 void(0)
(等同于 void 0)。在上述情况中,也可以使用全局变量undefined 来代替(假定其仍是默认值)。
<script>
console.log(void(console.log("OK")));
</script>
运行结果
OK
undefined
一般我个人称
javascript:void(0)
死链接
javasccript:; 空连接
而javasccript:;是为空链接,其实他也也是直接返回的undefined,而前者是计算完毕之后返回undefined
推荐使用javascript:;
个人习惯使用前者,好像感觉后置更快点,我感觉在前端就无所谓了!
可以去看看各个大网站是输入使用连接的
模拟
当用户点击一个以 javascript: URI 时,浏览器会对冒号后面的代码进行求值,然后把求值的结果显示在页面上,这时页面基本上是一大片空白,这通常不是我们想要的。只有当这段代码的求值结果是 undefined 的时候,浏览器才不会去做这件 傻事
,所以我们经常会用 void 运算符来实现这个需求
看代码:
<ahref="javascript:void(0);">
这个链接点击之后不会做任何事情,如果去掉 void(),
点击之后整个页面会被替换成一个字符 0。
</a>
<ahref="javascript:void(document.body.style.backgroundColor='green');">
点击这个链接会让页面背景变成绿色。
</a>
参考资料
- 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
, 也就是网页的上端
如果想完成跟右侧等价的写法,我提供了三种方式进行参考
<ahref="#"onclick="returnfalse;">href</a>
<ahref="javascript:return false;"onclick="调用的js方法">href</a>
<ahref="####">这里是空链接,没有经过测试</a>