为何JS操作的href都是javascript:void(0);呢


Posted in Javascript onNovember 12, 2015

一、我是一只小白

为何JS操作的href都是javascript:void(0);呢

下半年浮躁多了,得好好静心学习,告别小白。果断买了几本书:

为何JS操作的href都是javascript:void(0);呢

其中,最先看的是《javascript模式》——不少人认为很shi的一本书。……评价观后感等500字省略……当我看到第二章要结束的时候,又一次看到了“JS中避免使用void”的观点,于是,勾起了身为小白的我困扰已久的一个问题:“既然JS中void不推荐,那为何新浪微博,淘宝之流的首页JS操作的href都是javascript:void(0);呢?”

截图为证!

为何JS操作的href都是javascript:void(0);呢为何JS操作的href都是javascript:void(0);呢

为什么?为什么?都系睇?都系睇?

为何JS操作的href都是javascript:void(0);呢

二、小白的疑惑

百撕不得骑姐啊百撕不得骑姐!

每当看到void,我都想起了N多年前,刚接触程序C语言那会的梦魇,大学唯一挂过科的就是C语言,每次都让我想起那个干巴巴的女讲师。像我这种纯良的好学生,大学之前网吧都没有去过的好同学,也不先具述程序何物有何用,开头就噼里啪啦变量啊,语句啊,XXX的,每天对着黑色的背景的奇怪东西敲a, b, c,那种感觉就像是小时候被大孩子摁在河底呛水喝,云里雾里,水里土里。我想起了小时候看过的一个故事,一个在农村上学的小伙子有幸作为交换生去英国交流学习,住在普通人家里(自然很热情),可是没几天,这位小伙子就被赶走了——原因是:丫的尿尿都不掀马桶盖,家里可是有lady的,太不尊重了!而实际上,这位小伙子第一次见到马桶就是在这户人家,他根本不知道马桶盖是干嘛用的,尿尿的时候要掀起来!

是习惯还是规范,我疑惑了!所谓javascript:void(0)之流的风气我估计就是丫的些C, C++所谓程序背景人带来的,可以追溯到10年之前……

我正好打开着QQ邮箱,于是看了下其href值,为javascript:;

为何JS操作的href都是javascript:void(0);呢

由此可以证明,void(0)确实是多余的,没用的,那为何这么多网站都使用这个呢?每次都要多敲7个多余的字符,这是要闹哪样,莫非绩效是根据HTML的代码量来算的!

为何JS操作的href都是javascript:void(0);呢

百撕不得骑姐啊百撕不得骑姐!

然后,我还有更进一步的疑问:JavaScript中语句最后的分号是可以缺省的,那为何要使用javascript:;而不是javascript:呢?

是习惯还是规范,我疑惑了!

具有代码洁癖的coder们,没事多写一个分号,圣洁的精神世界杯玷污了,怎么能忍受的了呢?这又不是多多语句,不写分号可能会出现意想不到的情况!

像我这种懒到手抽筋,多写一个字符都会难受到满地打滚的人,实在是想不过来啊想不过来!

或许只因我是个小白,巴神的世界我不懂。

三、我是一只小白

我使用href="javascript:"很多年了,一直都是惴惴不安地使用,因为别人都是href="javascript:void(0);",是不是因为href="javascript:"有什么潜在的问题?比方说影响性能?或者让人不能识别马桶盖?

求指点,求吐槽!

做个简单的总结吧:

请参考下面链接中对于void的说明:

针对上面的问题,借用链接中的代码:

<a onclick="fn()">Does not appear as a link, because there's no href</a> 
<a href="javascript:void(0)" onclick="fn()">fn is called</a> 
<a href="javascript:undefined" onclick="fn()">fn is called</a> 
<a href="javascript:" onclick="fn()">fn is called too!</a>

上面三个都是等价的。

另外给大家附上一则网友对javascript:;和javascript:void(0);的解释

大家看JavaScript脚本经常可以看到这样的代码:
〈a href="javascript:doTest2();void(0);"〉here〈/a〉
但这儿的void(0)究竟是何含义呢?
JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression

expression 是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。

你可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。

下面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在 JavaScript 上没有任何效果。

void和#的区别

#包含了一个位置信息默认的锚点是#top 也就是网页的上端,而javascript:void(0) 仅仅表示一个死链接。

这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首,而javascript:void(0) 则不是如此所以调用脚本的时候最好用void(0)。

Javascript 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
纯js实现的论坛常用的运行代码的效果
Jul 15 Javascript
javascript 触发HTML元素绑定的函数
Sep 11 Javascript
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
三种动态加载js的jquery实例代码另附去除js方法
Apr 30 Javascript
angularJS 中$scope方法使用指南
Feb 09 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
Mar 21 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
Apr 01 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
Nov 15 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
javascript+css实现俄罗斯方块小游戏
Jun 28 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 #Javascript
js图片轮播效果实现代码
Apr 18 #Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 #Javascript
javascript发送短信验证码实现代码
Nov 12 #Javascript
javascript倒计时效果实现
Nov 12 #Javascript
基于jquery步骤进度条源码分享
Nov 12 #Javascript
javascript手风琴下拉菜单实现代码
Nov 12 #Javascript
You might like
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
javascript常用方法汇总
2014/12/02 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
python如何让类支持比较运算
2018/03/20 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
pandas分批读取大数据集教程
2020/06/06 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
银行简历自我评价
2014/02/11 职场文书
网站创业计划书
2014/04/30 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
售后服务承诺函格式
2015/01/21 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android