js与或非

JavaScript09

js与或非,第1张

(1)对于布尔值,只有都为true才返回true;

(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