&& 和 || 操作符的返回值

741 阅读1分钟

|| 和 && 首先会从左到右对第一个操作数执行条件判断,如果其不是布尔值就先进行 ToBoolean 强制类型转换,然后再执行条件判断。

1.逻辑与 &&

如果第一个操作数条件判断结果为 true 就返回第二个操作数的,如果为 false 就返回第一个操作数的

【注】如果一个值可以转换为true,则该值就是所谓的truthy。如果一个值可以转换为false,则该值就是所谓的falsy

console.log(true && false);   //false
console.log(0 && true);   //0
console.log(1 && 2);   //2
console.log(2 && 0);   //0
console.log('' && 'foo')   //empty string

可以转换为false的表达式有:

  • false;
  • null;
  • NaN;
  • +0,-0,0n;
  • 空字符串(""''``
  • undefined

2.逻辑或 ||

如果第一个操作数条件判断结果为 true 就返回第一个操作数的值,如果为 false 就返回第二个操作数的值。

console.log(false || true);   //true
console.log(1 || 2);   //1
console.log(0 || 2);   //2
console.log('' || 'foo')   //foo

3. && 和 || 优先级

AND运算符的优先级OR运算符,这意味着&&运算符在||运算符之前执行

【注意】|| 和 && 返回它们其中一个操作数的值,而非条件判断的结果