||与&&的使用方法有三层境界,你属于哪一种?

1、简单的布尔值判断

	var res = true && false
	第一个操作数   第二个操作数     结果
	   true           false       false
	   true           true         true
	   false          false        false
	   false           true         true

2、表达式转换为布尔值进行一个判断 (如果并且)

var a = 1;
var b = 2;
//如果a==3 并且b==2  那么就怎样怎样
var res =  a==3 && b==2  //false

3、短路运算符(如果那么)(先进行一个判断,然后运行之后的语句)

&& 如果第一个数已经是false了,那么还有必要接着接着往下么,显然是不需要的,因为结果已经清楚了。但是如果第一个数是true,那么显然肯定是需要去执行第二个数的

&&作为短路操作符:为假而来。返回的是那个false值。如果都为真就返回第二个数。
||作为短路操作符: 为真而来。返回的是那个true值。如果都为假就返回第二个数。
let flagone = 1;
let flagtwo = null;
let value = flagtwo && flagone;
console.log(value) //null


        let flagone ;
        let flagtwo = null;
        let value = flagtwo || flagone;
        console.log(value) //undefined
var a = 1;
var b = 2;
//如果a判断是1 是true那么就去执行将b重新赋值为10。   第一个数是判断 第二个是操作
a==1 && b=10  

❏ 如果第一个操作数是对象,则返回第二个操作数;
❏ 如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
❏ 如果两个操作数都是对象,则返回第二个操作数;
❏ 如果第一个操作数是null,则返回null;
❏ 如果第一个操作数是NaN,则返回NaN;
❏ 如果第一个操作数是undefined,则返回undefined。

4、返回值

根据第三其实可以知道,它的返回值其实并不一定是一个布尔值,而是却决于后面执行的那个表达式

实际开发中逻辑与的返回值并不重要,主要用于判断或者说用于短路操作(判断并且运行)

5、逻辑或的第二层理解(或者或者)

6、逻辑或的第三层理解(如果不什么什么那么什么什么)(多用于赋值)

多用于赋值
x= a || b

❏ 如果第一个操作数是对象,则返回第一个操作数;
❏ 如果第一个操作数的求值结果为false,则返回第二个操作数;
❏ 如果两个操作数都是对象,则返回第一个操作数;
❏ 如果两个操作数都是null,则返回null;
❏ 如果两个操作数都是NaN,则返回NaN;
❏ 如果两个操作数都是undefined,则返回undefined。
与逻辑与操作符相似,逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

7、&& || 的优先级 &&>||

a && b || c
如果a那么就执行b否则就执行c  也就是if   else  的缩写。通常用于执行语句
a是一个判断  b和c是语句

a ? b:c 通常赋值的用的