if({})是ture == ===

if(变量===null){}并不是false,因为看的是他们是否相等,而不是先把null转化为了false,所以if(变量===0){}是不一样的。

注意:{}是一个对象,只是么有键值对,null是一个空对象引用。

1.等值符== 类型转换规则:如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。而其他值都不能转化为数值,如“hh”,所以与数值比较的话会是false。

  • true转为1,false转为0
  • “123”转为123
  • 123就是123
  • 并且“01”和“1”是同一类型,所以不会进行转换为数字,所以两者比较为false     

2.流控制语句如if语句,会自动执行相应的Boolean转换,如不进行Boolean转换的话,{}是不等于true的,{}任然属于对象,而null是一个空对象引用。

let a={};
    if(a){
        //会执行这里的语句
    }
alert(Boolean(a)==true);//ture
alert(a==true);//false
let a= {};
    alert(Boolean(a)==null);//f,类型不同,值不同,所以false
    alert(Boolean(null));//f,非对象,所以false
    alert(a==null);//f,类型相同,但是引用不同,所以false
    alert(Boolean(a));//t

let a={b:1};//a指向一个对象引用,在栈中保存着一个地址引用
    a={};//a指向一个没有键值对的对象引用,且断开与之前的引用,重新保存一个新的地址引用
    a=null;//a指向一个空对象引用,且断开与之前的引用,不保存新的地址引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值