Js中==与===

JavaScript中提供相等运算符与=严格相等运算符,建议是只要变量的数据类型能够确定,一律使用===

==相等运算符

在判断相等时会进行隐式的类型转换, 其比较遵循一些原则,即先转换类型再比较。

如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值,即是调用Number()方法。
如果一个操作数是字符串,另一个是数值,在比较相等性之前先将字符串转换为数值,同样调用Number()方法。
如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()和toString()方法把对象转换成基础类型的值再比较,除Date对象外,会优先尝试使用valueOf()方法,用得到的基本类型按照前面的规则进行比较。
以及null == undefined,此外任何其他组合,都不相等。

1 == true //true // Number Boolean
2 == true //false
1 == "1"  //true // Number String
[] == ""  //true // Object String
[] == false // true // Object Boolean
[] == 0   //true // Object Number
[] == {}  //false
[] == []  //false
{} == {}  //false
null == undefined //true

在使用的时候可能会出现一些问题。

0 == "0"  //true
0 == []   //true
"0" == [] // false

===严格相等运算符

===先判断类型再比较,类型不同直接不相等。
ES6数据类型有Number、String、Boolean、 Object、Symbol、null和undefined。

1 === true //false
1 === "1"  //false
[] === ""  //false
null === undefined //false

if

if()也可以看作是一个单独的运算符类别。

if(true) console.log("exec"); //exec
if(false) console.log("exec");
if(1) console.log("exec"); //exec
if(0) console.log("exec"); 
if(-1) console.log("exec"); //exec
if("true") console.log("exec"); //exec
if("1") console.log("exec"); //exec
if("0") console.log("exec"); //exec
if("") console.log("exec");
if(null) console.log("exec");
if(undefined) console.log("exec");
if("null") console.log("exec"); //exec
if("undefined") console.log("exec"); //exec
if([]) console.log("exec"); //exec
if({}) console.log("exec"); //exec
if([0]) console.log("exec"); //exec
if(NaN) console.log("exec");

总之 ===先进行类型比较,类型不同直接不等 == 先进行类型转化在进行值比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值