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 相关文章推荐
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
网络图片延迟加载实现代码 超越jquery控件
Mar 27 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
javascript实现数字+字母验证码的简单实例
Feb 10 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
vue组件实现进度条效果
Jun 06 Javascript
小程序实现抽奖动画
Apr 16 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 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
Javascript 学习笔记 错误处理
2009/07/30 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
python opencv实现图像配准与比较
2021/02/09 Python
雷蛇美国官网:Razer
2020/04/03 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
低碳环保演讲稿
2014/08/28 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
新郎答谢词
2015/01/04 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS