首页 > web前端 > js教程 > 正文

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

PHP中文网
发布: 2016-05-16 19:17:44
原创
1193人浏览过

在jscript的众多运算符里,提供了三个逻辑运算符&&||!,噢?! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是jscript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false,而||和&&运算比较的好玩。

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

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

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

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

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

    立即学习Java免费学习笔记(深入)”;

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

利用JScript中运算符"||"和"&&"的特殊特性实现代码精简_javascript技巧var value = 'abc' && '123&& new Date();

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

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

利用JScript中运算符"||"和"&&"的特殊特性实现代码精简_javascript技巧var value1 = 'abc' || '123|| null || false;
利用JScript中运算符"||"和"&&"的特殊特性实现代码精简_javascript技巧
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测试过,结果是一样的!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号