JavaScript操作符之逻辑操作符

举报
青年码农 发表于 2022/08/24 22:18:35 2022/08/24
【摘要】 对于编程语言来说,逻辑操作符跟相等操作符几乎同样重要。 逻辑操作符一共三个,!(逻辑非)、&&(逻辑与)、||(逻辑或)。 1 !(逻辑非) 这个操作符始终返回布尔值,无论什么数据类型,逻辑非操作符始终先将操作数据转换为布尔值,之后在进行取反。 console.log(!false);&...

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

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

1 !(逻辑非)

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


   
  1. console.log(!false); // true
  2. 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。


   
  1. console.log({} && null);             //null
  2. console.log(null && {});             //null
  3. console.log({} && undefined)         //undefined
  4. console.log(undefined && {});        //undefined
  5. console.log({} && NaN);              //NaN
  6. console.log(NaN && {});              //NaN

3 ||(逻辑或)

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

let result = true || false;
  

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

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

  • 如果第一个操作数是对象,则返回第一个操作数。

  • 如果第一个操作数求值为 false,则返回第二个操作数。

  • 如果两个操作数都是对象,则返回第一个操作数。

  • 如果两个操作数都是 null,则返回 null。

  • 如果两个操作数都是 NaN,则返回 NaN。

  • 如果两个操作数都是 undefined,则返回 undefined。


   
  1. console.log({} || null);             //{}
  2. console.log(null || {});             //{}
  3. console.log({} || undefined)         //{}
  4. console.log(undefined || {});        //{}
  5. console.log({} || NaN);              //{}
  6. console.log(NaN || {});              //{}

文章来源: blog.csdn.net,作者:NMGWAP,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/NMGWAP/article/details/125067149

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。