逻辑与或非(&& || !)

1、逻辑与(&&)

左值和右值都是true时,返回true,两边都是false或者两边的值其中一边是fasle,就返回false;

    (false,null,indefined,0,-0,NaN和"")这些都是假值

举个例子如下:

var o = {s:1}; //创建一个对象
var p = null; //创建了一个null
o && o.s //返回1,应为o是真值,所以返回o.s的值
p && p.x //返回null,p是假值,所以不计算p.x,直接返回p的值

2、逻辑或( || )

找到第一个为真的的值就返回,如果都是假值则返回最后一个值,如下:

console.log( null || undefined || NaN); //三个值都是假的 返回最后一个值 NaN;
console.log( 1 || 2 || 3 ); //三个值都是真的返回第一个值 1
console.log( null || 1 || NaN); //从左向右一次寻找,找到为真的值就会立即停止,马上返回;

3、逻辑非(!)

他的作用就是将数的布尔值进行求反
举个栗子:

var a = 1;
var b = -1;
console.log ( ! a ); //返回 -1;
console.log (! b); //返回 1;

如果x是真值,!x返回false,如果x是假值,!x返回true;
返回布尔值时,已经将这些真值,假值转换成了布尔值,再对其进行求反。

逻辑非有一个负负得正的概念,如下:

var a = 1;
console.log ( !! a );  //返回1;

还有一条最重要的就是与或非的优先级,如下:

! > && > ||   
console.log( !4 && 6 || undefined); //会先计算优先级最高的 “非!”
其次是“与&&”  最后才是“或||”;
分解如下:
( !4 && 6 || undefined)
( -4 && 6 || undefined);
( 6 || undefined);
最后选择6,返回true;

你可能感兴趣的:(逻辑与或非(&& || !))