在JScript中运算符"||"和"&&"的特殊特性

简介:
  在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是否也是这样支持的?如果您方便的话,请告如我运行后的结果


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
5月前
|
JavaScript 前端开发
JavaScript基础-运算符与条件语句
【6月更文挑战第11天】本文探讨了JavaScript中的运算符和条件语句,包括算术、比较、逻辑、赋值及三元运算符。强调了使用严格等于`===`避免类型转换错误,理解逻辑运算符短路特性和优化条件结构以提高代码可读性。通过示例展示了正确使用这些概念,以提升代码质量和维护性。
36 2
|
JavaScript 前端开发
JavaScript 语法:运算符号
JavaScript 语法 之 运算符号
71 0
JavaScript 语法:运算符号
|
JavaScript 前端开发
JavaScript | 运算符与表达式
这里是`JavaScript`系列教程第四期啦!
|
JavaScript 前端开发
JavaScript -- 操作符和逻辑运算
JavaScript -- 操作符和逻辑运算
|
JavaScript 前端开发 开发者
javascript运算符与流程控制
javascript运算符与流程控制
76 0
|
JavaScript 前端开发
JavaScript运算符与表达式
JavaScript运算符与表达式
74 0
|
JavaScript 前端开发 Java
JavaScript学习笔记 02、表达式与操作符(一)
JavaScript学习笔记 02、表达式与操作符(一)
JavaScript学习笔记 02、表达式与操作符(一)
|
JavaScript 前端开发
JavaScript学习笔记 02、表达式与操作符(二)
JavaScript学习笔记 02、表达式与操作符(二)
JavaScript学习笔记 02、表达式与操作符(二)
|
JavaScript 前端开发
JavaScript 之 运算符与表达式
JavaScript 之 运算符与表达式
117 0
JavaScript 之 运算符与表达式
|
JavaScript 前端开发
JavaScript运算符操作
JavaScript运算符操作
94 0