Javascript 中,相等操作符两等号“==”与三个等号 “===” 有什么区别?

By 刘志军 , 2021-09-21, 分类: javascript

JavaScript

Javascript 中,相等操作符两等号“==”与三等号 “===” 有什么区别? 先看个例子:

1=="1"
true
1==="1"
false

1、== 基于类型转换的相等

== 是一种基于类型转换的相等,如果两个操作数的类型不同,它会尝试先做类型转换再比较

1、null 与 undefined 相等

null == undefined   //true

2、如果一个值是数值,另一个值是字符串,则先把字符串转换为数值再比较

1=="1" // true

3、 如果一个值为true,则转换为1, 如果为false, 则转换为0再比较

true == 1  //true
true == '1' // true   true 转换为1 , "1" 转换为 1
false == '0' //true

4、一个值可以转换为另一个值,但并不意味着两者相等,例如:

undefined == false  // false , 虽然undefined 转换为布尔值为false, 但是==操作符并不会将undefined转换为false。 只有在if语句中才会转换。

null == false // false 同上

5、如果一个值是对象,另一个是在原始值,则先把对象转换为原始值,对象要么使用toString()方法 或者 valueOf() 方法转换为原始值再做比较

Number("1") == 1 //true     Number("1") 会使用valueOf() 方法转换为数值1再比较

[1] == 1// true   数组[1]使用toString()方法转换为字符串为“1”, 再转换为数值1, 故两者相等。

2、=== 严格相等

===是一种严格的相等操作符,比较时不做任何类型转换,更加严谨。对于原始值,只有两个值的类型相同而且值相等时才相等。如果是对象,两个值必须引用的是同一个对象才相等,如果引用的不是同一个对象,即使值相同也不相等。实践中应该使用===来判断两个值是否相等,除非明确知道 == 不会带来隐患。

true === 1 //false

[1] === 1 //false

let a = [1]
let b = [1]

a === b // false   a 和 b 引用两个不同的数组对象

关注公众号「Python之禅」,回复「1024」免费获取Python资源

python之禅

猜你喜欢

2021-11-12
Javascript 原型与原型链
2021-10-15
javascript条件式访问属性
2021-11-09
javascript对象的3个属性特征
2021-10-19
javascript 字符串长度
2020-12-08
JavaScript高级程序设计读书笔记三:基本引用类型
2020-12-08
JavaScript高级程序设计读书笔记二:变量与作用域
2021-10-15
javascript 箭头函数介绍
2020-12-07
JavaScript 高级程序设计笔记:基础语法
2021-05-13
python和javascript中的round函数区别
2021-10-30
Javascript 解构赋值