&&和||返回值问题

   首先要知道&&和||是什么。&&是并运算符,一般用于判断语句如:
 

  1. if (a && b){
     
  2. //当a和b为真时执行
     
  3. }

      也许有人会说那  a && b  这个东西返回了true ! 那么这对么?显示是错误的,我们运行以下代码:

  1. alert( 'a' && 'b' )   //弹出 b

     看,弹出了 b  。因此我们可以知道  'a' && 'b' 这个运算的结果就是 'b' 。那有人要问那怎么解释第一个if 语句呢。我们先不关心这个问题,继续看||运算符。


 

  1. alert( 'a' || undefined )   //弹出 'a'
     
  2. alert( undefined || 'b' )   //弹出'b'
     
  3. alert( 'a' || 'b' )              //弹出 'a'

     总结第三个代码 我们发现,|| 返回了一个可以转为true的值。就是这里了。

       && 是并运算符,首先检查 左边,如果左边的值转成布尔类型后为假那就返回左值,如果左边值转成布尔类型后为真那继续较验右边值,如果右边值转成布尔类型后为假则返回右边值。如果如右边值为真是也返回右边值。

     ||  是或运算符,如果左边为真是直接返回左边值,如果左边转成布尔类型后为假时返回右边值。

     所以 && 和 || 返回的值不是true也不是false。而是将参加运算县且符合运算逻辑的值返回。

     所以有这样的赋值语句:   

  1. a = a || {}

    当 a 未定义或定义未赋值或赋值转为布尔类型为假时给a赋值空对象。

 

原文见我博客:http://www.xdarui.com/articles/46.shtml

posted @ 2011-06-20 17:41  Darrel.Hsu  阅读(334)  评论(0编辑  收藏  举报