Javascript条件判断使用小技巧总结


Posted in Javascript onSeptember 08, 2008

考虑下面的代码

if (node.nextSibling.className == ...) {
...
}

在 node 或者 node.nextSibling 为空(null)的情况下,会返回错误(error)。所以,通常情况下的解决方案的代码为

if ((node) && (next = node.nextSibling) && ... ) {
...
}

那么,当条件判断一多的情况下,代码会形成下面的情况

if (
(node) &&
(node.nextSibling) &&
(node.nextSibling.className == ...)
... ) {
...
}

随着判断条件的不断的增加,代码会变得非常的“丑陋”。

有个小的“伎俩”,可以简化条件判断表达式。我们可以增加个空对象({})或者零(0)作为替代

if ( next = (node || 0).nextSibling) ) {
...
}

那么,上述的代码就可以这样写

if (((node || 0).nextSibling || 0).className == ...) {
...
}

--Split--

就个人而言,上述的从某种角度而言,代码会非常的精简。但日常实际的编码过程中,尤其是多人配合的情况下,这些代码可能会给其他开发人员造成一定的困扰。

正如 小马 所言,如果已经在使用某些框架,需要具体问题具体分析。比如上述的条件判断代码,使用 YUI 编码就可以使用

YAHOO.util.Dom.hasClass(el, className)

显得更加的精简,并且相比上述的代码更容易理解。

Javascript 相关文章推荐
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
Jun 24 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
JS闭包可被利用的常见场景小结
Apr 09 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
使用yeoman构建angular应用的方法
Aug 14 Javascript
微信小程序实现轮播图效果
Sep 07 Javascript
Webpack打包字体font-awesome的方法示例
Apr 26 Javascript
vue.js响应式原理解析与实现
Jun 22 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
Dec 06 Javascript
SyntaxHighlighter代码加色使用方法
Sep 07 #Javascript
很多人都是用下面的js刷新站IP和PV
Sep 05 #Javascript
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 #Javascript
IE浏览器PNG图片透明效果代码
Sep 02 #Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
Sep 02 #Javascript
JQUERY CHECKBOX全选,取消全选,反选方法三
Aug 30 #Javascript
jquery复选框CHECKBOX全选、反选
Aug 30 #Javascript
You might like
IStream与TStream之间的相互转换
2008/08/01 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python字符串排序方法
2014/08/29 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python网络爬虫实例讲解
2016/04/28 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Django实现文件上传下载
2019/10/06 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
Python基于template实现字符串替换
2020/11/27 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
美国保健品专家:Life Extension
2018/05/04 全球购物
什么是View State?
2013/01/27 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
大学生创业策划书
2014/02/02 职场文书
教师自我剖析材料
2014/09/29 职场文书
音乐课外活动总结
2015/05/09 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
2016年情人节广告语
2016/01/28 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers