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

JavaScript基础-比较运算符

在JavaScript编程中,比较运算符用于比较两个值,并返回一个布尔值(truefalse),这对于我们进行条件判断和逻辑控制至关重要。掌握这些运算符不仅有助于编写高效的代码,也是处理复杂逻辑的基础。本文将详细介绍JavaScript中的各种比较运算符及其用法。

一、相等与不等运算符

1. 相等(==

双等号(==)用于比较两个值是否相等,如果相等则返回true。需要注意的是,双等号会进行类型转换后再比较。

示例:
console.log(1 == "1"); // 输出: true
console.log(0 == false); // 输出: true

在这个例子中,字符串"1"被转换成数字1,而false被转换成数字0,因此两者分别被认为是相等的。

2. 不等(!=

不等运算符(!=)用于检查两个值是否不相等,如果不相等则返回true。同样地,它也会进行类型转换。

示例:
console.log(1 != "2"); // 输出: true
console.log(0 != false); // 输出: false

在这里,由于0false都被认为是相等的,所以结果为false

3. 严格相等(===

严格相等运算符(===)不仅检查值是否相等,还会检查它们的数据类型是否相同。如果没有类型转换,只有当两个值完全相同时才会返回true

示例:
console.log(1 === "1"); // 输出: false
console.log(0 === false); // 输出: false
console.log(1 === 1); // 输出: true

推荐尽可能使用严格相等运算符来避免隐式类型转换带来的意外结果。

4. 严格不等(!==

严格不等运算符(!==)用于检查两个值是否既不相等,也不具有相同的类型。

示例:
console.log(1 !== "1"); // 输出: true
console.log(0 !== false); // 输出: true
console.log(1 !== 1); // 输出: false

二、关系运算符

关系运算符用于比较两个值的大小关系。

1. 大于(>

大于运算符(>)用于检查左侧值是否大于右侧值。

示例:
console.log(5 > 3); // 输出: true
console.log("apple" > "banana"); // 输出: false

注意:当比较字符串时,会按照字母顺序进行比较。

2. 小于(<

小于运算符(<)用于检查左侧值是否小于右侧值。

示例:
console.log(3 < 5); // 输出: true
console.log("apple" < "banana"); // 输出: true

3. 大于等于(>=

大于等于运算符(>=)用于检查左侧值是否大于或等于右侧值。

示例:
console.log(5 >= 5); // 输出: true
console.log(6 >= 5); // 输出: true
console.log(4 >= 5); // 输出: false

4. 小于等于(<=

小于等于运算符(<=)用于检查左侧值是否小于或等于右侧值。

示例:
console.log(5 <= 5); // 输出: true
console.log(4 <= 5); // 输出: true
console.log(6 <= 5); // 输出: false

三、特殊情况

1. null 和 undefined

在JavaScript中,nullundefined之间有一些特殊的比较规则:

  • null == undefined 返回 true
  • null === undefined 返回 false

这是因为虽然它们被视为“相等”,但它们的数据类型不同(null是对象类型,而undefined是其自身类型)。

2. NaN

NaN表示“Not-a-Number”,任何与NaN的比较都会返回false,包括NaN == NaNNaN === NaN

示例:
let x = NaN;
console.log(x == NaN); // 输出: false
console.log(x === NaN); // 输出: false

要检查一个值是否为NaN,应该使用Number.isNaN()函数。

console.log(Number.isNaN(NaN)); // 输出: true

四、结语

感谢您的阅读!如果你有任何问题或想分享自己的经验,请在评论区留言交流!

相关文章:

JavaScript基础-比较运算符

在JavaScript编程中&#xff0c;比较运算符用于比较两个值&#xff0c;并返回一个布尔值&#xff08;true或false&#xff09;&#xff0c;这对于我们进行条件判断和逻辑控制至关重要。掌握这些运算符不仅有助于编写高效的代码&#xff0c;也是处理复杂逻辑的基础。本文将详细介…...

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要&#xff1a;Uniapp作为一款基于Vue.js的跨平台开发框架&#xff0c;支持“一次开发&#xff0c;多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台&#xff0c;并解析常见问题。 一、环境准备 在开始前&#xff0c;请确保已安装以下工具…...

《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急设备智能化升级路径与落地实践

感谢阅读本次内容分享&#xff0c;下面我将解读分析《加快应急机器人发展的指导意见》&#xff0c;喜欢的点赞支持一下呗~(日更真的很辛苦~)&#xff0c;欢迎评论区留言讨论&#xff0c;你们的发言我都会看到~ 《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急…...

Java基础知识大全(含答案,面试基础)

对于初学者来说&#xff0c;掌握Java的基础知识是成为一名优秀Java开发者的第一步。而对于经验丰富的开发者&#xff0c;扎实的基础同样是继续深入学习、攻克更高难度技术的基础。因此&#xff0c;在面试和实际工作中&#xff0c;Java的基础知识不仅是评估开发者能力的标准&…...

将长上下文大语言模型研究从输入转向输出

将长上下文大语言模型研究从输入转向输出 摘要: 近年来&#xff0c;长上下文大语言模型&#xff08;LLMs&#xff09;的研发主要集中在处理更长的输入文本上&#xff0c;这使得模型在理解长篇内容时取得了显著进步。然而&#xff0c;生成长篇输出的研究却相对被忽视&#xff…...

C/C++蓝桥杯算法真题打卡(Day4)

一、P11041 [蓝桥杯 2024 省 Java B] 报数游戏 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;// 计算第 n 个满足条件的数 long long findNthNumber(long long n) {long long low 1, high 1e18; // 二分查找范围while (low < high) {lo…...

正则表达式(2)匹配规则

正则表达式的匹配规则定义了如何识别字符串中的特定模式。这些规则包括字符类匹配、元字符匹配、数量词、字符转义和分组。 字符类匹配 字符类匹配允许你指定一个字符集合&#xff0c;并匹配该集合中的任意单个字符。这是通过方括号 [] 来实现的。 简单字符类&#xff1a;[abc…...

详解动态规划算法

动态规划 一、动态规划的核心思想二、动态规划的步骤1. 定义状态&#xff08;State&#xff09;2. 确定状态转移方程&#xff08;State Transition Equation&#xff09;3. 确定边界条件&#xff08;Base Case&#xff09;4. 填表&#xff08;Table Filling&#xff09;或递归计…...

DTO 命名规范指南

在项目实践中&#xff0c;将查询对象和返回对象都使用 DTO 后缀是可以的&#xff0c;但通常有更清晰的命名规范&#xff0c;帮助区分两者的作用。 &#x1f6a8; 推荐的命名规范 请求数据&#xff08;查询参数、请求体等&#xff09; → 使用 Request / Query 后缀返回数据&a…...

C++编写Redis客户端

目录 安装redis-plus-plus库 ​编辑 编译Credis客户端 redis的通用命令使用 get/set exists del keys expire /ttl type string类型核心操作 set和get set带有超时时间 set带有NX string带有XX mset mget getrange和setrange incr和decr list类型核心操作…...

数据开发面试: 项目介绍示例

快照表 快照表&#xff08;Snapshot Table&#xff09;是数据仓库中用来存储某一时间点的数据状态的表。这种表通常包含在特定时间点上业务实体的静态数据&#xff0c;它记录了业务在某一特定时刻的“快照”视图。快照表通常用于存储那些不经常变化的数据&#xff0c;或者即使…...

记录一下Django的密码重置(忘记密码)

一. Django默认的密码重置 1.路由 # url.pyfrom django.contrib.auth import views as auth_viewsurlpatterns [# 密码重置path(password_reset/, auth_views.PasswordResetView.as_view(), namepassword_reset),# 用户输入邮箱后&#xff0c;跳转到此页面path(password_res…...

【运维篇】KubeSphere-02(经验汇总)

一、使用建议 1.对于数据库、对像存储比较重的要不能丢失&#xff0c;有异地存储备份需求的有状态服务&#xff0c;不建议采用k8s进行部署&#xff0c;会导致运维难度更大。 2.对于中间件如redis、MQ、harbor、seata、nacos、zookeeper可采用k8s部署。 3.对于无状态服务tomc…...

MySQL 5.7.40 主从同步配置教程

MySQL 主从同步能有效提升数据冗余备份与负载均衡。下面我将以 MySQL 5.7.40 版本为例&#xff0c;详细讲解如何进行主从同步配置。 MySQL 5.7.40 主从同步配置教程 一、环境准备 假设我们有两台服务器&#xff0c;一台作为主服务器&#xff08;Master&#xff09;&#xff…...

Qt:多线程

目录 初识Qt多线程 QThread常用API QThread的使用 Qt中的锁 条件变量和信号量 初识Qt多线程 Qt 多线程 和 Linux 中的线程本质是一个东西 Linux 中学过的 多线程 APl&#xff0c;Linux 系统提供的 pthread 库 Qt 中针对系统提供的线程 API 重新封装了 C11 中&#xff0c;…...

算法系列之广度优先搜索解决妖怪和尚过河问题

在算法学习中&#xff0c;广度优先搜索&#xff08;BFS&#xff09;是一种常用的图搜索算法&#xff0c;适用于解决最短路径问题、状态转换问题等。本文将介绍如何利用广度优先搜索解决经典的“妖怪和尚过河问题”。 问题描述 有三个妖怪和三个和尚需要过河。他们只有一条小船…...

详解常用集合和映射中的线程安全问题

1. 前言 在 Java 中&#xff0c;集合和映射是常用的数据结构&#xff0c;它们分为线程安全和线程不安全两类。我们常用的集合包括&#xff1a;ArrayList、HashSet、CopyOnWriteArrayList、CopyOnWriteArraySet。常用的映射包括&#xff1a;HashMap、ConcurrentHashMap、Hashta…...

计算机毕业设计SpringBoot+Vue.js车辆管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

【js逆向】iwencai国内某金融网站实战

地址&#xff1a;aHR0cHM6Ly93d3cuaXdlbmNhaS5jb20vdW5pZmllZHdhcC9ob21lL2luZGV4 在搜索框中随便输入关键词 查看请求标头&#xff0c;请求头中有一个特殊的 Hexin-V,它是加密过的&#xff1b;响应数据包中全是明文。搞清楚Hexin-V的值是怎么生成的&#xff0c;这个值和cooki…...

安卓设备root检测与隐藏手段

安卓设备root检测与隐藏手段 引言 安卓设备的root权限为用户提供了深度的系统控制能力&#xff0c;但也可能带来安全风险。因此&#xff0c;许多应用&#xff08;如银行软件、游戏和流媒体平台&#xff09;会主动检测设备是否被root&#xff0c;并限制其功能。这种对抗催生了ro…...

【音视频 | AAC】AAC编码库faac介绍、使用步骤、例子代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

Unity摄像机跟随物体

功能描述 实现摄像机跟随物体&#xff0c;并使物体始终保持在画面中心位置。 实现步骤 创建脚本&#xff1a;在Unity中创建一个新的C#脚本&#xff0c;命名为CameraFollow。 代码如下&#xff1a; using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…...

dp_走方格(包含dfs分析,记忆化搜索)

类似题目解析&#xff1a;dp_最长上升子序列&#xff08;包含dfs分析&#xff0c;记忆化搜索&#xff09;-CSDN博客 题目链接&#xff1a;2067. 走方格 - AcWing题库 题目图片&#xff1a; 分析题目&#xff08;dfs&#xff09; 这个题目说有一个行为n行&#xff0c;列为m列…...

软考 中级软件设计师 考点笔记总结 day01

文章目录 软考1.0上午考点下午考点 软考1.11、数值及其转换2、计算机内数据表示2.1、定点数 - 浮点数2.2、奇偶校验 和 循环冗余校验 (了解)2.3、海明码 &#xff08;掌握&#xff09;2.4、机器数 软考1.0 上午考点 软件工程基础知识&#xff1a; 开发模型、设计原则、测试方…...

如何用Kimi生成PPT?秒出PPT更高效!

做PPT是不是总是让你头疼&#xff1f;&#x1f629; 快速制作出专业的PPT&#xff0c;今天我们要推荐两款超级好用的AI工具——Kimi 和 秒出PPT&#xff01;我们来看看哪一款更适合你吧&#xff01;&#x1f680; &#x1f947; Kimi&#xff1a;让PPT制作更轻松 Kimi的生成效…...

K8S学习之基础十八:k8s的灰度发布和金丝雀部署

灰度发布 逐步扩大新版本的发布范围&#xff0c;从少量用户逐步扩展到全体用户。 特点是分阶段发布、持续监控、逐步扩展 适合需要逐步验证和降低风险的更新 金丝雀部署 将新版本先部署到一小部分用户或服务器&#xff0c;观察其表现&#xff0c;再决定是否全面推广。 特点&…...

Java 深度复制对象:从基础到实战

目录 一、深度复制的概念二、实现深度复制的方法1. 使用序列化2. 手动实现深度复制 三、总结 在 Java 编程中&#xff0c;对象的复制是一个常见的需求。然而&#xff0c;简单的复制操作&#xff08;如直接赋值&#xff09;只会复制对象的引用&#xff0c;而不是创建一个新的对象…...

【前端】webstorm创建一个导航页面:HTML、CSS 和 JavaScript 的结合

文章目录 前言一、项目结构二、HTML 结构三、CSS 样式四、JavaScript 功能五、现代化风格优化htmlcssjavascript运行效果 总结 前言 在现代网页开发中&#xff0c;一个良好的导航栏是提升用户体验的重要组成部分。在这篇文章中&#xff0c;我将向您展示如何创建一个简单而完整…...

AI编程: 一个案例对比CPU和GPU在深度学习方面的性能差异

背景 字节跳动正式发布中国首个AI原生集成开发环境工具&#xff08;AI IDE&#xff09;——AI编程工具Trae国内版。 该工具模型搭载doubao-1.5-pro&#xff0c;支持切换满血版DeepSeek R1&V3&#xff0c; 可以帮助各阶段开发者与AI流畅协作&#xff0c;更快、更高质量地完…...

第11章 web应用程序安全(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的&#xff0c;已经过去3年时间了&#xff0c;最近利用闲暇时间&#xff0c;抓紧吸收&#xff0c;总的来说&#xff0c;第11章开始学习利用web应用程序安全&#xff0c;主要讲信息收集、dns以及burpsuite&#xff0c;现在的资产测绘也…...