聊聊js运算符 ‘与(&&)’和‘ 或(||)’

一,先来几个问题,看给位能都全部答对。

     

  var objA1 = {x:1};

        var objA2 = {x:2};

        var resultA = objA1 && objA2;

        //请问resultA是什么??

        var objB1 = { x: 1 };

        var objB2 = null;

        var resultB = objB1 && objB2;

        //请问resultB是什么?

        var objC1 = null;

        var objC2 = undefined;

        var resultC = objC1 && objC1;

        //请问resultC是什么?

 

二,上面的答案

  1,objA2

  2,objB2

  3,null

如果各位有没有答对的,请继续往下看。

 

三,javascript 运算符与(&&)或(||)’简单总结

   1,当运算符两边都是bool值时。

         这个无需多说,地球人都知道。

   2,当运算符是两边是真值(假值)时。

  • 关于真值和假值,不知道的可以百度一下,我这里先简要介绍一下,js中除了:false,”0,‘’(空字符串),null,undefinded,NAN ”六个是假值,其他的都是真值,这里需注意: '0'、'null'、'false'、{}、[]也都是真值。在代码中经常看到如下代码:
  • var o = { x: "test" };
      if (o) {
           document.writeln(o.x);//因为os是真值,所以这里输出:test;
        };
  • 表达式“&&”左右都是真值:返回右边的值
  • 表达式“&&”左右有一个是假值是:返回假值
  • 表达式“&&”左右都是假值:返回左边值
  • 表达式“||”左右都是真值,返回左边操的值
  • 表达式“||”左右有一个是假值,返回真值
  • 表达式“||”左右都是假值,返回右边的值

四,运算符与(&&)或(||)其他总结

  1, “&&”的行为有时称谓‘短路’,我们偶尔也会看到一些代码利用了这些特性来又条件的执行代码,例如下面的两行代码是完全等价的。

 if (a==b) {
            test();//当a和b相同时,执行test();
        }

  (a == b) && test();//同上

 

2,当“&&”右侧的表达式有副作用时(赋值,递增,函数调用表达式)要格外小心,因为这些带有副作用的表达式的执行依赖于左侧操作数的计算结果,

posted on 2015-04-13 12:52  王俊1234  阅读(1947)  评论(1编辑  收藏  举报

导航