JS基础语法之==和===的区别以及NaN

2024-04-07 04:20
文章标签 基础 语法 js 区别 nan

本文主要是介绍JS基础语法之==和===的区别以及NaN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

==和===的区别

== 和 === 都是用来比较两个值是否相等的运算符

=== 运算符也被称为严格相等运算符,它不会进行类型转换。只有在两个操作数的值和类型完全相同时,===才会返回 true。
==比较时会进行类型转换,比较的是值
===比较时不会进行类型转换,既比较类型又比较值

详细解释:

==

  • 0 == false 会返回 true,因为在比较之前,false 会被转换为数字 0
  • 1 == "1" 会返回 true,因为在比较之前,字符串 "1" 会被转换为数字 1

===

  • 0 === false 会返回 false,因为它们的类型不同。
  • 1 === "1" 会返回 false,因为一个是数字,一个是字符串。
// 使用 == 运算符比较
console.log(1 == "1");  // 输出 true,因为 "1" 被转换为数字 1,然后和数字 1 比较// 使用 === 运算符比较
console.log(1 === "1");  // 输出 false,因为一个是数字,一个是字符串,类型不同// 使用 == 运算符比较
console.log(0 == false);  // 输出 true,因为 false 被转换为数字 0,然后和数字 0 比较// 使用 === 运算符比较
console.log(0 === false);  // 输出 false,因为一个是数字,一个是布尔值,类型不同

NaN

NaN 是 JavaScript 中一种特殊的数值,表示 "Not a Number",通常用于表示一个无效的数值。当某个操作无法产生有效的数值时,就会返回 NaN

NaN表示不是一个数字
字符串类型的转换
字符串转换为数字:
若将14A32转换为数字,则结果为14,将A123转换为数字则结果为NaN
其他类型转换为boolean:
Number:0和NaN为false,其他的均为true
String:空字符串为false,其他均为true
Null和undefined:均为false

举个栗子:

console.log(0 / 0);  // 输出 NaN,0 除以 0 会得到 NaN
console.log(Math.sqrt(-1));  // 输出 NaN,负数的平方根是无效的
console.log("Hello" / 5);  // 输出 NaN,字符串除以数字会得到 NaN
console.log(parseInt("Hello"));  // 输出 NaN,无法将字符串转换为整数

注意:

俩个NaN进行比较时,也会返回false,NaN在比较时被视为不相等

在处理可能产生NaN的情况时,通常可以使用 isNaN() 函数来检查一个值是否为NaN

console.log(isNaN("Hello"));  // 输出 true,"Hello" 无法转换为数值,因此是 NaN
console.log(isNaN(123));  // 输出 false,123 是一个有效的数值

这篇关于JS基础语法之==和===的区别以及NaN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881628

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

python中getsizeof和asizeof的区别小结

《python中getsizeof和asizeof的区别小结》本文详细的介绍了getsizeof和asizeof的区别,这两个函数都用于获取对象的内存占用大小,它们来自不同的库,下面就来详细的介绍一下... 目录sys.getsizeof (python 内置)pympler.asizeof.asizeof

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu