一篇关于if()和a==b判断的博客

对于括号中的表达式,会转换成bool值再进行相应的判断。

什么值将会转换成false值:

undefined,Null,bool中的false,Number中的+0,-0和NaN,String中的空字符串

严格相等与非严格相等:

=== 三个等号是严格相等的意思:

如果等号两边的数据具有不同的类型,那他们就不是严格相等的,

== 两个等号是非严格相等的意思:

在转换前,会先将等式两边转换成一个类型,再进行比较,如果相等,则会返回true

所有的值与undefined 和null都不相等,undefined==null,

"" == 0 //题目1
两边都是false,因此结果为true
" " == 0 //题目2
空白字符转换(tonumber)后为0, 结果为true
"" == true //题目3
结果false,空字符串为false
"" == false //题目4
结果为true 理由同上
" " == true //题目5
结果为false,同题目2
!" " == true //题目6
除了空字符串为false;其他都为true,true取反为false
!" " == false //题目7
同上
"hello" == true //题目8
hello转换为数字为NAN,因此不为true
"hello" == false //题目9
hello转换为数字为NAN,因此也不为false
"0" == true //题目10
"0"转换成数字为0,因此为false
"0" == false //题目11
为true
"00" == false //题目12
为true
"0.00" == false //题目13
为true
undefined == null //题目14
结果为true; 死记硬背把
{} == true //题目15
结果为false,里面无tovalue 只是一个空的字符串
[] == true //题目16
同上,空数组。
var obj = {
a: 0,
valueOf: function(){return 1}
}
valueof 得到1,就拿1和这些判断
obj == "[object Object]" //题目17
false,1!= "[object Object]"
obj == 1 //题目18
true
obj == true //题目19
true
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值