||与&&的使用方法有三层境界,你属于哪一种?
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 通常赋值的用的