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 相关文章推荐
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
Aug 05 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
后台获取ZTREE选中节点的方法
Feb 12 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
Sep 14 Javascript
js实现延时加载Flash的方法
Nov 26 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
vue如何进行动画的封装
Sep 26 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
Aug 06 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
php Session存储到Redis的方法
2013/11/04 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
Python进程间通信之共享内存详解
2017/10/30 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
python调用私有属性的方法总结
2020/07/24 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
社区工作者感言
2014/03/02 职场文书
团代会主持词
2014/04/02 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
《火烧云》教学反思
2016/02/23 职场文书
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android