(2)对于不是布尔值的情况则:
如果第一个操作数是对象,则返回第二个数
eg:var str = new Array()
console.log(str&&8);//返回值为8
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象。
如果第两个操作数都是对象,则返回第二个数操作数。
如果有一个操作数是null,则返回null。
eg: console.log(8&&null)//返回结果为null
如果有一个操作数是NaN,则返回第NaN。
如果第一个操作数是undefined,则返回undefined。
(1)对于布尔值,逻辑或是非常简单的,只要有一个true,就返回true;
(2)对于不是布尔值的情况则:
如果第一个操作数是对象,则返第一个操作数
如果第一个操作数的求值结果为false,则返回第二个操作数
如果两个操作数都是对象,则返回第一个操作数
如果两个操作数是null,则返回null
如果两个操作数是NaN,则返回NaN
如果两个操作数是undefined,则返回undefined
如果一个操作数是一个对象,返回false
如果一个操作数是一个空字符串,返回false
如果一个操作数是一个非空字符串,返回false
如果一个操作数是一个数值0,返回true
如果一个操作数是任意的非零字符,返回false
如果一个操作数是null,返回true
如果一个操作数是NaN,返回true
如果一个操作数是undefined,返回true
注:逻辑与,逻辑非都是从左向右判断,谁的第一个逻辑判断为true就显示谁,只不过逻辑非必须两个都为true,而且谁是第一个false就显示谁。
&:逻辑与,&&同样可以表示逻辑与;
||:逻辑或,|也可以表示逻辑或;
===:先判断左右两边的数据类型,如果数据类型不一致,直接返回false;
!:逻辑非;
++:自加符号,在原有的基础上加上1;
js运算符双竖杠“||”的用法
1、JS双竖线运算符:是或比较。如null||‘1’,返回’1’‘2’||‘1’,返回’2’。即或运算符中,第一个为真,后面的就不用计算了,所以得’2’。
2、js 中 使用双竖线运算符"||",返回第一个有效值
var objOne = undefined || 1 || null || new Date()
var objTwo = new Date()
var objThree = objOne || objTwo
alert(objThree.toString())//out put “1”
扩展资料:
1、逻辑运算符&&、 || 和&、| 性能上的比较
逻辑运算符&&|| 中,如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;
如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。而&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。
2、功能用法
&&和||只能进行逻辑运算,而&和|除了可以进行"逻辑运算"外,还可以进行位运算。
3、位运算
&和|本是位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行"逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算:
document.write(true &false)//JS,结果为0