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代码
May 28 Javascript
深入了解javascript中的prototype与继承
Apr 14 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
Aug 17 Javascript
JavaScript检查子字符串是否在字符串中的方法
Feb 03 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
May 02 Javascript
vue.js实现备忘录demo
Jun 26 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
Feb 27 Javascript
js实现简单图片拖拽效果
Feb 22 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
许愿墙中用到的函数
2006/10/07 Javascript
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JavaScript SHA512&SHA256加密算法详解
2015/08/11 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中统计函数运行耗时的方法
2015/05/05 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
音乐教育感言
2014/03/05 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
创先争优一句话承诺
2014/05/29 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
长城英文导游词
2015/01/30 职场文书
中学团支部工作总结
2015/08/13 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android