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

条件判断 逻辑运算符

条件判断 && 逻辑运算符

前言:本篇文章主要介绍 js基础知识,包括 if 条件表达式、逻辑运算符以及新增的特性空值合并运算符 (??)

1. 条件运算

1.1 if 语句

if(···)语句会计算圆括号内表达式,并将计算结果转换为布尔型。

if(condition === true){
	// write excute code in here
}

1.2. else 语句

如果 if 判断条件不成立,则执行 else 语句

if(false){
	// 跳过
}else{
	// write excute code in here
}

else 总和离其最近的 if 结对

let a=1,b=2
if(a<1){
	b = 1
}else if(a>1){
	b = 2
}else{
	b = 3
}
console.log(b) // 3

1.3. 多个条件 else if()

当具有多个判断条件时执行

if(a){
	
}else if(b){
	
}else if(c){
	
}else{
	
}

1.4. 条件运算符

如果 condition 为真,则返回 value1,即 result = value1,否则返回 value2

let result = condition ? value1 : value2

if 语句改写为

let result
if(condition){
	result = value1
}else{
	result = value2
}

测试:

let a = 3,b = 5
let num = a > b ? a : b
num // 5

2. 逻辑运算符

逻辑运算符在运行过程中会将每一个操作数转换为 布尔

2.1. 逻辑非

逻辑非 ! 将操作数转换为布尔类型,并返回相反的值。

!true  // false
!false // true

2.2. 逻辑与 &&

只要有一个操作数为假,表达式就停止判断,并返回第一个假值。否则返回最后一个真值。

console.log(true && false)   // false
console.log(false && true)   // false
console.log(true && true)   // true

console.log(1 && 0)   // 0
console.log(1 && 2)   // 2
console.log(0 && 1)   // 0

2.3. 逻辑或 ||

只要有一个操作数为真,表达式就停止判断,并返回第一个真值。否则返回最后一个假值。

console.log(true && false)    // true
console.log(false && true)    // true
console.log(false && false)   // false
运算:表达式为真时返回第一个真值,表达式为假时返回最会一个假值。

console.log(1 && 0)      // 1
console.log(1 && 2)      // 1
console.log(0 && null)   // null
console.log([] && 0)     // 0

2.4. 空值合并运算符 ??

空值合并运算符返回第一个已定义的值,如果都没有定义,则返回 undefined

a ?? b // 若a已定义,则返回a,否则返回b

测试:

let a,b=5
a ?? b // 5

let c=1,b
c ?? b // 1

let c=1,b=2
c ?? b // 1

let d,e
d ?? e // undefined

2.5 用逻辑 && 重写 ??

let result = (a !== null && a !== undefined) ? a : b

2.6 ??|| 比较

|| 返回第一个真值
?? 返回第一个已定义的值

?? 可以返回 0

问题?
|| 无法区分 0、false、''、null、undefined,当第一个参数为其中之一时,我们只能得到第二个参数值。但有时我们希望只有在参数值为 null/undefined 时使用默认值

let width = 0
alert(width || 100) // 100
alert(width ?? 100) // 0

2.7 优先级

?? 优先级与 || 相同,只比 =、? 高一点

2.8 ?? 禁止与 && 或者 || 一起使用


http://www.kler.cn/a/3118.html

相关文章:

  • 分布式系统架构怎么搭建?
  • GSI快速收录服务:让你的网站内容“上架”谷歌
  • 全程Kali linux---CTFshow misc入门(14-24)
  • 2025 春节联欢晚会魔术揭秘
  • 16.Word:石油化工设备技术❗【28】
  • mybatis(134/134)完结
  • Visual chatgpt多模态大模型的前菜
  • 平板触控笔哪些品牌好?ipad触控笔推荐平价
  • 第十三届蓝桥杯省赛 python B组复盘
  • Spring Boot 自定义应用开发框架九——基本增删改查“低代码”框架初设计2 未完待续
  • MySQL的COUNT语句,竟然都能被面试官虐的这么惨!?
  • 如何实现一个 APM watchdog
  • 通信工程考研英语复试专有名词翻译
  • 【数据结构入门】-二叉树的基本概念
  • Linux系统编程 - 基础IO(IO操作)
  • 【Linux】进程理解与学习(Ⅰ)
  • Vue项目实战 —— 后台管理系统( pc端 ) —— Pro最终版本
  • 【Selenium自动化测试】滑动解锁与窗口截图、关闭
  • Spring Boot 实现多文件上传
  • “提效”|教你用ChatGPT玩数据
  • Android 基础功能例子
  • 智能零售柜商品检测软件(Python+YOLOv5深度学习模型+清新界面)
  • 自定义类型 (结构体)
  • C# 支付宝接口在线收款退款
  • 最强的Python可视化神器,你有用过么?
  • 【DFS专题】深度优先搜索 “暴搜”优质题单推荐 10道题(C++ | 洛谷 | acwing)