这篇文章主要给大家介绍了关于JavaScript/TypeScript中==和===区别的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在JS/TS项目中,除了判断两个变量是否相等的= =运算符,我们还会看到= =运算符。这两者有区别吗?
先下结论,
对于String, number这些基础类型,==操作符会先把两边的变量进行类型强制转换成相同的类型再比较是否相等;===操作符则不会进行类型转换,而是直接进行比较。对于array, object这些高级类型,==和===是没有区别的,因为它们比较的是 ldquo;指针地址rdquo; 。对于基础类型和高级类型,==和===是有区别的;==操作符会先把高级类型转换为基础类型之后,进行值的比较;===操作符则不会进行转换,类型不同,直接返回false
也就是说,` = = '运算符只需要比较两个变量的值是否相等,而` = = '运算符要求两个变量的值和类型应该相同;同样的,`!= `运算符将进行类型转换,`!= = `运算符不转换类型。
让我们编写一个基本类型变量的代码示例:
66 == '66'; // 返回true66 === '66' // 返回false
= =运算符将第一行的字符串转换成数字,与66比较,两者值相等,则返回true;= = =运算符不会进行类型转换,因为左边的数字和右边的字符串属于不同的类型,将返回false。
注意特殊值NaN(不是数字),表示不是数字。如果NaN等于任意数(包括自身),则返回false,所以最好使用isNaN()函数判断NaN;
对于undefined和null,两个值之间的比较将返回true。
代码示例如下:
NaN == 6; // 返回falseNaN === NaN; // 返回falsenull == undefined; // 返回truenull === undefined; // 返回false
最后,因为= =而且!=运算符带来的类型的隐式转换规则非常复杂。另外,为了避免导致bug的数据类型混淆,建议使用= = =运算符和!= =运算符。
Js在判断值是否= =之前会做类型转换。如果= =,则类型和值必须相等。
摘要
关于JavaScript/TypeScript中= =和= =的区别,本文到此为止。更多关于js/ts中= =和= =的区别
精彩评论