PPP - Javascript/Actionscript

Front-End Web Developing(javascript/Aactionscript/CSS/XML) web前端开发
    <<  为什么会有海贼王这么好看的动画! | 首页 | IE6默认不缓存背景图片的解决  >>
  • 2008-08-05


    Javascript条件判断小伎俩 - [javascript开发]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://madinsect.blogbus.com/logs/27091743.html

    原文:http://www.gracecode.com/Archive/Display/2086

    我们已经知道,null 没有任何的属性值,并且无法获取其实体(existence)值。所以 null.property 返回的是错误(error)而不是 undefined 。

    考虑下面的代码

    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)

    显得更加的精简,并且相比上述的代码更容易理解。


    随机文章:

    什么是DOM?DOM和JavaScript的关系 2009-04-01
    Javascript在IE和Firefox中的区别 2008-07-17
    IE下产生内存泄漏的几种情况以及解决办法 2008-07-01
    [翻译]JScript Memory Leaks -- javascript内存泄漏 2008-07-01
    当你的弹出窗被拦截后怎么办? 2008-02-03

    收藏到:Del.icio.us




    Tag:javascript null undefined 条件判断
    引用地址:
    madinsect 发表于10:56 | 编辑 | 继续话题 | 转发 | 分享 0

文章分类

  • flash开发[2]
  • life生活[14]
  • javascript开发[10]
  • web开发[6]
  • 转载[1]
  • RSS 什么是RSS?
    用IM提醒我内容更新
    订阅到QQ邮箱
    订阅到鲜果阅读器
    订阅到Google阅读器
    订阅到抓虾阅读器
  • 《城客》第四期:创意之城
    博客大巴
    博客大巴使用指南
    博客大巴模板中心
    免费注册博客大巴
    一键博客搬家工具
    中文互动杂志城客
Copyright © 2002-2009 BlogBus.com, All Rights Reserved. 博客大巴 版权所有