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

在JScript的众多运算符里,提供了三个逻辑运算符&&||!。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是JS的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回truefalse,而||和&&运算比较特别。

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

  • 所有对象都被认为是 true。
  • 字符串当且仅当为空(""或'')时才被认为是 false。
  • null 和未定义的均被认为是 false。
  • 数字当且仅当为 0 时才是 false。

    注意:虽然if(null)不会被执行,但是(null==false)的运算结果为false,因为解析器认为是一个无意义的null对象和false做比较运算,根据上面第一条,对象都被认为是true,因此结果是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时就立即返回。
    这样的特性可以帮组我们写出精简的代码,可是同时也带来代码不便于阅读维护的问题。

转自:http://www.cnblogs.com/birdshome/archive/2005/01/21/95068.html,经删改!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值