一,先来几个问题,看给位能都全部答对。
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,当“&&”右侧的表达式有副作用时(赋值,递增,函数调用表达式)要格外小心,因为这些带有副作用的表达式的执行依赖于左侧操作数的计算结果,