然后说一下这个,JavaScript操作符之逻辑操作符

对于编程语言来说,逻辑操作符跟相等操作符几乎同样重要。

逻辑操作符一共三个,!(逻辑非)、&&(逻辑与)、||(逻辑或)。

1 !(逻辑非)

这个操作符始终返回布尔值,无论什么数据类型,逻辑非操作符始终先将操作数据转换为布尔值,之后在进行取反。

console.log(!false); // true
console.log(!0);     // true 

遵循:

  • 如果操作数是对象,则返回 false。
  • 如果操作数是空字符串,则返回 true。
  • 如果操作数是非空字符串,则返回 false。
  • 如果操作数是数值 0,则返回 true。
  • 如果操作数是非 0 数值(包括 Infinity),则返回 false。
  • 如果操作数是 null,则返回 true。
  • 如果操作数是 NaN,则返回 true。
  • 如果操作数是 undefined,则返回 true。

2 &&(逻辑与)

逻辑与操作符可用于任何类型的操作数,不限于布尔值。规则同真则真,有假则假

let result = true && false; 

针对都是布尔值,遵循两个都是true,则为true,有一个为false,则为false,如果两个都是false,则为false。

如果不止布尔值,则遵循:

  • 如果第一个操作数是对象,则返回第二个操作数。
  • 如果第二个操作数是对象,则只有第一个操作数求值为 true 才会返回该对象。
  • 如果两个操作数都是对象,则返回第二个操作数。
  • 如果有一个操作数是 null,则返回 null。
  • 如果有一个操作数是 NaN,则返回 NaN。
  • 如果有一个操作数是 undefined,则返回 undefined。
console.log({} && null);             //null
console.log(null && {});             //null
console.log({} && undefined)         //undefined
console.log(undefined && {});        //undefined
console.log({} && NaN);              //NaN
console.log(NaN && {});              //NaN

3 ||(逻辑或)

与逻辑与一样,可用于任何类型的操作数,不限于布尔值。同假则假,有真则真

let result = true || false; 

针对都是布尔值,遵循两个都是true,则为true,有一个为true,则为ture,如果两个都是false,则为false。

如果不止布尔值,则遵循:

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数求值为 false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个操作数。
  • 如果两个操作数都是 null,则返回 null。
  • 如果两个操作数都是 NaN,则返回 NaN。
  • 如果两个操作数都是 undefined,则返回 undefined。
console.log({} || null);             //{}
console.log(null || {});             //{}
console.log({} || undefined)         //{}
console.log(undefined || {});        //{}
console.log({} || NaN);              //{}
console.log(NaN || {});              //{}

正文完