JavaScript/TypeScript中==和===的区别详解
作者:gentle_zhou 发布时间:2024-04-25 13:14:39
在JS/TS项目里,除了能看到==操作符来判断两个变量是否相等外,我们还会看到===操作符,这两者有什么区别吗?
先上结论,
对于String, number这些基础类型,==操作符会先把两边的变量进行类型强制转换成相同的类型再比较是否相等;===操作符则不会进行类型转换,而是直接进行比较。
对于array, object这些高级类型,==和 ===是没有区别的,因为它们比较的是 “指针地址” 。
对于基础类型和高级类型,== 和 ===是有区别的;==操作符会先把高级类型转换为基础类型之后,进行值的比较;===操作符则不会进行转换,类型不同,直接返回false
也就是说,`==`操作符只要求比较两个变量的值是否相等,`===`操作符则是要求两个变量的值和类型都要相同;类似地,`!=`操作符会去做类型强制转换,`!==`操作符则不会转换类型。
我们写个基础类型变量的代码示例一下:
66 == '66'; // 返回true
66 === '66' // 返回false
==操作符会把第一行里的字符串转换成数字,与66再进行比较,值相等,于是返回true;===操作符则不会做类型转换,因为左边数字,右边字符串,两者类型不同,就会返回false。
注意对于特殊值NaN(Not a Number),表示非数字,NaN和任何数(包括它自己)做相等比较,都会返回false,所以判断NaN最好用isNaN()函数;
而对于undefined和null,两者的值相比较,会返回true。
代码示例如下:
NaN == 6; // 返回false
NaN === NaN; // 返回false
null == undefined; // 返回true
null === undefined; // 返回false
最后, 由于==和!=操作符带来的类型隐式转换规则非常繁琐,还有为了避免数据类型混淆导致出现bug,还是推荐使用===操作符和!==操作符。
js在比较的时候如果是 == 会先做类型转换,再判断值得大小,如果是===类型和值必须都相等。
来源:https://bbs.huaweicloud.com/blogs/336334


猜你喜欢
- 一、介绍make_blobs() 是 sklearn.datasets中的一个函数。主要是产生聚类数据集,产生一个数据集和相应的标签。函数的
- 我们都知道python的版本不同,在使用的时候就有所区别。鉴于我们推荐小伙伴们选择python3版本,所以这方面的区别了解的不是很多。就拿_
- 兄弟ifream的方法调用兄弟ifream Avar ifreamId = window.frameElement && w
- 假设我们有一个数据集,列名叫status下面有100万的数据,其中包装 “HUMAN_REFUSE”,”SYS_REFUSE”,”HUMAN
- 例子: rsajax.js: var http_request = false; function makePOSTRequest(url,
- 在这里我们介绍两个拼接数组的方法:np.vstack():在竖直方向上堆叠np.hstack():在水平方向上平铺import numpy
- Python3异步asyncio问题官方文档:https://docs.python.org/zh-cn/3/library/asyncio
- 前言在使用vue过程中,总会用到这样哪样的UI框架,在install这些框架时,往往还需要安装其要求的依赖,或是相关的编译环境,下面将记录描
- 本文以一段简单的监听鼠标、键盘事件的程序,实现获取用户的输入(比如登录某些网站的账号、密码)的功能。经测试,对于一台“裸奔”的电脑,完全能获
- 1 、据说python3就没有这个问题了2 、u'字符串' 代表是unicode格式的数据,路径最好写成这个格式,别直接跟字
- 本文实例讲述了PHP 对象继承原理与简单用法。分享给大家供大家参考,具体如下:对象继承继承已为大家所熟知的一个程序设计特性,PHP 的对象模
- 简介 函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着 .NET 平台上的
- 问题如何设定matplotlib输出的图片大小?import matplotlib.pyplot as plt一、plt.figure(fi
- jupyter notebook非常方便,想在服务器上面搭建一个,但是访问不了。(一)首先是安装jupyter notebook,pip i
- int()是Python的一个内部函数 Python系统帮助里面是这么说的>>> help(int) Help
- 本文实例讲述了Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法。分享给大家供大家参考,具体如下:统计两个红球和蓝球,哪个组合最
- 一、Linux系统查看Python路径whereis python此命令将会列出系统所安装的所有版本的Python的路径效果如下: 
- 1查看Linux发行版本[root@typecodes ~]# cat /etc/redhat-releaseCentOS Linux re
- 当一个页面上有一百个表单项,你是怎么获取上面的值勤的?这是一段简单的代码,你试试这段代码,试过后,欢迎留言说一下你的想法?index.asp
- 接着前面Django入门使用示例今天我们来看看Django是如何加载静态html的?我们首先来看一看什么是静态HTML,什么是动态的HTML