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 相关文章推荐
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Sep 29 Javascript
详解Vuex管理登录状态
Nov 13 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
mac上配置Android环境变量的方法
Jul 08 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
Jun 10 Javascript
mpvue实现微信小程序快递单号查询代码
Apr 03 Javascript
解决vue-router 切换tab标签关闭时缓存问题
Jul 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
PHP中对数据库操作的封装
2006/10/09 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
php猜单词游戏
2015/09/29 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
php fread函数使用方法总结
2019/05/28 PHP
Javascript注入技巧
2007/06/22 Javascript
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
详谈javascript异步编程
2016/02/21 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
Python3计算三角形的面积代码
2017/12/18 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
如何清空python的变量
2020/07/05 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
介绍下Java的输入输出流
2014/01/22 面试题
数据库笔试题
2013/05/09 面试题
主要的Ajax框架都有什么
2013/11/14 面试题
文秘档案管理岗位职责
2014/03/06 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
企业2014年度工作总结
2014/12/10 职场文书
信用卡收入证明范本
2015/06/12 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL