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 相关文章推荐
Extjs学习笔记之六 面版
Jan 08 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 Javascript
jquery比较简洁的软键盘特效实现方法
Mar 19 Javascript
JavaScript如何自定义trim方法
Jul 28 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
javascript中json基础知识详解
Jan 19 Javascript
Node.js 基础教程之全局对象
Aug 06 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
Jan 15 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
ES6 Class中实现私有属性的一些方法总结
Jul 08 Javascript
js回调函数原理与用法案例分析
Mar 04 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文件操作详解
2016/12/30 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
CI框架附属类用法分析
2018/12/26 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
Python+微信接口实现运维报警
2016/08/27 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python实现抽奖小程序
2020/04/15 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
小学中秋节活动方案
2014/02/06 职场文书
人事任命书范文
2014/06/04 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL