JavaScript-逻辑运算符
什么是逻辑运算符
名称? 格式? 返回值? 特点?
逻辑与 &&
格式:条件表达式A && 条件表达式B
返回值: true false
特点: 一假则假
逻辑或 ||
格式: 条件表达式A || 条件表达式B
返回值: true false
特点: 一真则真
逻辑非 !
格式: !条件表达式
返回值: true false
特点: 真变假, 假变真
如上的示例分别如下
逻辑与(&&)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
// true && true
let resOne = (10 > 5) && (20 > 10);
// true
let resTwo = true && true;
// false
let resThree = false && true;
// false
let resFour = true && false;
// false
let resFive = false && false;
console.log(resOne);
console.log(resTwo);
console.log(resThree);
console.log(resFour);
console.log(resFive);
</script>
</head>
<body>
</body>
</html>
逻辑或(||)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
// true
let resOne = true || true;
// true
let resTwo = false || true;
// true
let resThree = true || false;
// false
let resFour = false || false;
console.log(resOne);
console.log(resTwo);
console.log(resThree);
console.log(resFour);
</script>
</head>
<body>
</body>
</html>
逻辑非(!)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
// false
let resOne = !true;
// true
let resTwo = !false;
console.log(resOne);
console.log(resTwo);
</script>
</head>
<body>
</body>
</html>
逻辑运算符的优先级和结合性
逻辑运算符的结合性是 左结合性
(从左至右的运算)
在逻辑运算中 &&
的优先级高于 ||
逻辑运算符的注意点
- 在逻辑运算中如果不是布尔类型, 那么会先转换成布尔类型, 再参与其它的运算
- 在逻辑与运算中, 如果参与运算的不是布尔类型, 返回值有一个特点
格式: 条件A && 条件B
如果条件A不成立, 那么就返回条件A
如果条件A成立, 无论条件B是否成立, 都会返回条件B
- 在逻辑或运算中, 如果参与运算的不是布尔类型, 返回值有一个特点
格式: 条件A || 条件B
如果条件A成立, 那么就返回条件A
如果条件A不成立, 无论条件B是否成立, 都会返回条件B
- 在逻辑与运算中, 有一个逻辑短路现象
格式: 条件A && 条件B
由于逻辑与运算的规则是一假则假, 所以只要条件A是假, 那么条件B就不会运算
- 在逻辑或运算中, 有一个逻辑短路现象
格式: 条件A || 条件B
由于逻辑或运算的规则是一真则真, 所以只要条件A是真, 那么条件B就不会运算
示例分别如下所示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
let resOne = true && false;
let resTwo = false;
let resThree = true || false;
let resFour = true;
let resFive = true || false && false;
console.log(resOne);
console.log(resTwo);
console.log(resThree);
console.log(resFour);
console.log(resFive);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
// let resOne = !false;
let resOne = !0;
// let resTwo = !true;
let resTwo = !1;
console.log(resOne);
console.log(resTwo);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
// 如果条件A不成立, 那么就返回条件A
let resOne = 0 && 123;
let resTwo = null && 123;
// 如果条件A成立, 无论条件B是否成立, 都会返回条件B
let resThree = 1 && 123;
let resFour = 1 && null;
console.log(resOne);
console.log(resTwo);
console.log(resThree);
console.log(resFour);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script>
let num = 1;
// false true
let resOne = (10 > 20) && (++num > 0);
// true true
let resTwo = (10 < 20) || (++num > 0);
console.log(num);
console.log(resOne);
console.log(resTwo);
</script>
</head>
<body>
</body>
</html>
上图中的 num 打印的结果为 1
因为在 resOne
这个表达式中第一个表达式A中的结果是 false
所以表达式B就不会再执行
分类:
ECMAScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具