当前位置: 首页 > news >正文

js逻辑或(||)和且()

重点: JavaScript 中的逻辑运算符按照布尔逻辑进行计算,并且返回值是操作数本身


||

||:逻辑或,只要有一个表达式为真(truthy),整个表达式就为真

逻辑或 (||) 的行为:

||运算符可以用来连接两个或多个表达式。如果第一个表达式为真,那么会直接返回第一个表达式的值, 不再执行第二个表达式。如果第一个表达式为假,那么会返回第二个表达式的值

eg 1:用于条件判断

a = 1
b = ''
if (a || b) {console.log('a || b')
}
// 打印出 a || b

如上,a转化为布尔值为true,不管b转化后是否为true,结果都是返回a的值,而a的值1转化后为true,所以可以打印出结果

a = 1
b = ''
if (a == 2 || b == 1) {console.log('a || b')
}

如上,a == 2 为 false,b == 1 为 false, false || false 的结果,返回后面的false,所以不走if,打印不出结果

eg 2:提供默认值

a = ''
b = 0
c = a || b
console.log(c) // 0

如上,a的值为空(转换后为false),则返回b的值

eg 3: 简化条件表达式

let a  = ""
a = a ? a: 0;
简化后:
let a  = ""
a = a || 0

如上,如果a转换为布尔值后为true,则a赋值等于a,如果a转换为布尔值为false,则将a赋值为0。 它既是简化三元表达式,也是为a提供默认值。


&&

&&:逻辑与,所有表达式都为真(truthy)时,整个表达式才为真

逻辑与 (&&) 的行为:

&&运算符可以用来连接两个或多个表达式。如果第一个表达式为真,那么会返回第二个表达式的值;如果第一个表达式为假那么会直接返回第一个表达式的值,不再执行第二个表达式。

eg 1:用于条件判断

a = 1
b = 2
if (a && b) {console.log('a && b')
}
// 打印出 a && b

如上,a转化为布尔值为true,b转化为布尔值后也为true,a && b 返回第二个表达式的值true if(true) 所以可以打印出结果

a = 1
b = ''
if (a == 2 && b == 1) {console.log('a && b')
}

如上,a == 2 为 false,b == 1 为 false, false && false 的结果,返回前面的false,所以不走if,打印不出结果

eg 2:提供默认值

a = ''
b = 0
c = a && b
console.log(c) // ‘’

如上,a的值为空(转换后为false),则返回a的值

eg 3: 简化条件表达式

funciton b () {
} let a= 2;
let c= a ? b() : '';
// 简化后:
let a= 2;
let c= a && b();

如上,如果a转化后为true,则执行b函数,如果a为false,则不执行,在日常开发中很常用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在Jira中使用AI
  • 【Mind+】掌控板入门教程02 趣味相框
  • CTFHub——XSS——反射型
  • [YashanDB认证]YashanDB个人版安装
  • ECCV 2024 | 深入探索GAN先验,哈工大、清华提出模型反演新方案
  • 校园课程助手【4】-使用Elasticsearch实现课程检索
  • 2024上海初中生古诗文大会暑假备考:单选题真题和独家解析
  • RAG 的优化进阶与引入 Reranker
  • 频率的工程测量01 - Rif算法的构造
  • 双阈值最大最小值筛选
  • 锂离子电池健康状态预测(Part1,Python)
  • Unity Shader unity文档学习笔记(十八):unity雾效原理
  • 算法板子:树形DP、树的DFS——树的重心
  • 除湿机的标准
  • 深入探究CSRF与SSRF漏洞复现:从原理到实践
  • [case10]使用RSQL实现端到端的动态查询
  • Android系统模拟器绘制实现概述
  • Asm.js的简单介绍
  • ES6之路之模块详解
  • Gradle 5.0 正式版发布
  • idea + plantuml 画流程图
  • Iterator 和 for...of 循环
  • JavaScript新鲜事·第5期
  • jQuery(一)
  • MD5加密原理解析及OC版原理实现
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 订阅Forge Viewer所有的事件
  • 高性能JavaScript阅读简记(三)
  • 回流、重绘及其优化
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 实现菜单下拉伸展折叠效果demo
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 职场生活之道:善于团结
  • #APPINVENTOR学习记录
  • #window11设置系统变量#
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (13)Hive调优——动态分区导致的小文件问题
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (转)清华学霸演讲稿:永远不要说你已经尽力了