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 相关文章推荐
javascript中的关于类型转换的性能优化
Dec 14 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
asm.js使用示例代码
Nov 28 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
javascript 代码是如何被压缩的示例代码
May 06 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 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
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP模板解析类实例
2015/07/09 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
mouse_on_title.js
2006/08/25 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python实现的希尔排序算法实例
2015/07/01 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
公立医院改革实施方案
2014/03/14 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android