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

相关文章

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键