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 18 Javascript
Extjs入门之动态加载树代码
Apr 09 Javascript
jQuery布局插件UI Layout简介及使用方法
Apr 03 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
May 10 Javascript
AnjularJS中$scope和$rootScope的区别小结
Sep 18 Javascript
JQuery Ajax WebService传递参数的简单实例
Nov 02 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
Nov 07 Javascript
javascript实现电脑和手机版样式切换
Nov 10 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
linux下安装php的memcached客户端
2014/08/03 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
动态加载js的几种方法
2006/10/23 Javascript
深入认识JavaScript中的函数
2007/01/22 Javascript
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python实现浪漫的烟花秀
2019/01/30 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
政法大学毕业生自荐信范文
2014/01/01 职场文书
企业法人授权委托书
2014/04/03 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技