最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

利用JScript中运算符"||"和"&&"的特殊特性实现代码精简_javascript技巧

来源:懂视网 责编:小采 时间:2020-11-27 20:35:59
文档

利用JScript中运算符"||"和"&&"的特殊特性实现代码精简_javascript技巧

利用JScript中运算符""和"&&"的特殊特性实现代码精简_javascript技巧:在JScript的众多运算符里,提供了三个逻辑运算符&&、和!,噢! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是JScript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false
推荐度:
导读利用JScript中运算符""和"&&"的特殊特性实现代码精简_javascript技巧:在JScript的众多运算符里,提供了三个逻辑运算符&&、和!,噢! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是JScript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false
在JScript的众多运算符里,提供了三个逻辑运算符&&、||和!,噢?! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是JScript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false,而||和&&运算比较的好玩。

JScript对于逻辑运算的true|false是这么定义的:

  • 所有对象都被认为是 true。

  • 字符串当且仅当为空(""或'')时才被认为是 false。

  • null 和未定义的均被认为是 false。

  • 数字当且仅当为 0 时才是 false。

  • 可是逻辑运算符||和&&虽然遵循上面的定义规则,但是它们返回的值却很有意思。
    对于&&运算,按照上面的规则,表达式 if ( 'abc' && '123' && new Date() ) 是执行true分支,可是这个表达式如果写成:

    var value = 'abc' && '123' && new Date();

    结果value=Fri Jan 21 00:01:17 UTC+0800 2005,原它从左到右检测,如果到了最后一个表达式也是为true的,就返回那个表达式。

    对于||运算同理,对于下面的表达式:

    var value1 = 'abc' || '123' || null || false;
    var value2 = null || '' || false || 'ok';

    结果value1='abc',value2='ok'。这是因为||运算会有"短路"特性,他也是从左向右检测,只不过它是一但发现有为true的值,就立即返回该表达式。
    这样的特性可以帮组我们写出精简的代码,可是同时也带来代码不便于阅读维护的问题。
    由于我手头暂时没有NS和moz什么的浏览器,不知道标准JavaScript是否也是这样支持的?如果您方便的话,请告如我运行后的结果。

    JScript中,这些逻辑运算都是判断一个表达式是否为"有意义的"

    例如 0,"",null,false,undefined,NaN..等都是无意义的..

    && 会返回 true 或 false
    而 a||b 则是, 如果a是有意义的,则返回a,否则返回b

    所以有时候,我不这样写代码:
    var obj=QuerySomeObject();
    if(obj==null)return null;
    return obj.Property;

    我会写成
    return (QuerySomeObj()||{}).Property;
    另外要注意 null 与 false 的比较.
    0 "" 等与 false 进行==比较时都是相等的.

    但是 null 则不同了. 例如

    if(!null)
    {
    alert(1);
    }
    if(null==false)
    {
    alert(2);
    }
    在Firefox测试过,结果是一样的!

    文档

    利用JScript中运算符"||"和"&&"的特殊特性实现代码精简_javascript技巧

    利用JScript中运算符""和"&&"的特殊特性实现代码精简_javascript技巧:在JScript的众多运算符里,提供了三个逻辑运算符&&、和!,噢! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是JScript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false
    推荐度:
    标签: 运算符 || ||和
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top