首页 > 编程语言 >JavaScript中 == 和 === 的区别

JavaScript中 == 和 === 的区别

时间:2023-05-26 21:56:03浏览次数:53  
标签:操作数 相等 区别 JavaScript write 字符串 document true

1. 概念上

JS 中 == 是相同的意思,=== 代码严格相同

 

(1)操作数1 == 操作数2:也就是进行双等号比较时,先检查两个操作数的数据类型,如果相同,就进行 === 的比较,如果不同,则进行一次类型转换,转为相同类型后再进行比较

比较过程:

a)如果两个值类型相同,再进行三个等号的比较

b)如果两个值类型不同,这样也还是有可能相等的,因为

如果一个操作数是null,一个是操作数是undefined,就相等

如果一个是字符串,一个是数值,那么把字符串转为数值后再进行比较

(2)操作数1 === 操作数2:进行比较时,如果类型不同,直接就是false

比较过程

a)如果类型不同,就一定不相等

b)如果两个都是数值,并且是同一个值,那么就相等

     如果其中一个至少为NaN,那么就不相等(这里判断一个值是否是NaN,使用isNaN()来判断)

c)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等

d)如果两个值都是true,或是false就相等

e)如果两个值都是引用同一个对象或是函数,那么相等,否则不相等

f)如果两个值都是null,或是undefined,那么相等


2. 代码上

(1)数字9和字符9的比较

<script>
//数字9 和 字符9 进行比较
//这里发生类型转换 因此返回true
document.write(9 == '9');
document.write('<br>');
//直接先看类型,类型不同直接返回false
document.write(9 === '9');

</script>
 

(2)字符串文字和字符串对象进行比较

 

<script>
// 字符串对象类型转换为字符串文字
// 返回true
document.write('hello' == new String('hello'));
document.write('<br>');
// 直接比较类型
document.write('hello' === new String('hello'));
</script>

  

(3)布尔类型与字符串进行比较

<script>
//字符1被转换为true,返回true
document.write(true == '1');
//数字1被转为true,返回true
document.write(true == 1);
document.write('<br>');
//直接就比较类型
document.write(true === '1');
document.write(true === 1);

</script>

 

 

标签:操作数,相等,区别,JavaScript,write,字符串,document,true
From: https://www.cnblogs.com/miangao/p/17434947.html

相关文章

  • java中的BIO NIO AIO有什么区别?
    BIO、NIO和AIO都是Java中用于处理网络编程的技术,它们的主要区别如下:BIO:BIO(BlockingIO)阻塞式IO,指I/O的读写操作是阻塞的。当读写操作发生时,线程被阻塞,一直等到I/O完成才返回。BIO是Java最早的网络编程API,也是最常用的API。BIO的实现简单,易于理解和使用,但是由于阻塞......
  • 轻量应用服务器与ECS云服务器的区别?
    什么是轻量应用服务器?轻量应用服务器是面向入门级云计算及简单应用用户,提供基于单台云服务器的域名管理、应用部署、安全和运维管理的一站式综合服务。用户可以选择精品应用镜像(比如wordpress),并可在控制台实现全方位的服务器、域名、防火墙、安全防控、监控等管理和操作。轻量应......
  • 类型和接口之间的区别
    摘抄自《TypeScript编程》BorisCherny著安道译1.类型和接口的共同点与类型别名相似,接口是一种命名类型的方式,这样就不用在行内定义了。类型别名和接口算是同一概念的两种语法(就像函数表达式和函数声明之间的关系),不过二者之间还是有一些细微差别。先看二者的共同点。以下述类......
  • Javascript 指南:条件语句
    if/elseif/else语句是程序如何以编程方式处理是/否问题。如果第一个条件的计算结果为true,则程序将运行第一个代码块。否则,它将运行else块。让天气=“下雨”;如果(天气===“下雨”){控制台。log("今天别忘了带伞!");}否则{控制台。日志(“今天可能会很好”!);}输出:Don......
  • Javascript 指南:数组
    数组数组是JavaScript的有序列表,可以存储任何数据类型,包括字符串、数字和布尔值。数组中的每个项目都位于一个编号位置。句法数组由方括号和里面的内容表示。数组中的元素应该用逗号分隔。让colors=["red","blue","green","yellow"];访问和更新元素要访问或更改数组中......
  • 视频直播源码,JavaScript 下载文件、图片
    视频直播源码,JavaScript下载文件、图片一、下载文件 letdownLoadFile=(obj,name,suffix)=>{   consturl=window.URL.createObjectURL(newBlob([obj]));   constlink=document.createElement('a');   link.style.display='none';   l......
  • spring中的beanFactory和FactoryBean的区别?
    beanFactory是容器的根接口是一个工厂,负责管理bean,创建bean。FactoryBean是一个工厂bean,用来创建一类比较复杂的对象。比如mybatis里的sqlsessionFactory。二者的联系:FactoryBean的实现类会向容器中注入自身以及getObject方法返回的对象。二者联系的点在于AbstractBeanFac......
  • FLEX实践—控件内容与String显示区别
     在解释这个区别之前先来看一段示例:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[i......
  • 深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick
    深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、TransformerEncoder等原理详细讲解1.XLNet:GeneralizedAutoregressivePretrainingforLanguageUnderstanding1.1.从AR和AE模型到XLNet模型自回归模型(AutoregressiveModel,AR),通过估计......
  • JavaScript 格式化金额
    JavaScript格式化金额一、使用toLocaleString()要格式化金额,可以使用JavaScript的toLocaleString()方法。该方法可以将数字转换为本地化的字符串表示形式,并可以指定货币符号、小数点和千位分隔符等格式。代码如下:美元constamount=1234567.89;constformattedAmou......