Javascript 篱式条件判断


Posted in Javascript onAugust 22, 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 相关文章推荐
js压缩利器
Feb 20 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
mvc中form表单提交的三种方式(推荐)
Aug 10 Javascript
关于使用js算总价的问题
Jun 23 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
使用vue打包进行云服务器上传的问题
Mar 02 Javascript
基于canvas实现手写签名(vue)
May 21 Javascript
jQuery实现雪花飘落效果
Aug 02 jQuery
vant 自定义 van-dropdown-item的用法
Aug 05 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 #Javascript
javascript:void(0)的真正含义实例分析
Aug 20 #Javascript
利用404错误页面实现UrlRewrite的实现代码
Aug 20 #Javascript
一些不错的js函数ajax
Aug 20 #Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
Aug 14 #Javascript
jquery之Document元素选择器篇
Aug 14 #Javascript
JavaScript国旗变换效果代码
Aug 13 #Javascript
You might like
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
php4的彩蛋
2006/10/09 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Pygame框架实现飞机大战
2020/08/07 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
函授本科自我鉴定
2013/11/03 职场文书
小学教师培训感言
2014/02/11 职场文书
爱护公共设施标语
2014/06/24 职场文书