每日面试题8.13

先上题:

        console.log(([]) ? true : false);
        console.log(([] == false ? true : false));
        console.log(({} == false) ? true : false) 

今天的这一道面试题主要是关于==这个知识点的。
要想完全做懂此类型的题目,我们应该需要了解以下几个点。

  1. 基本类型的转化顺序。String>Number>Boolean
  2. ==只是去判断左右两边的字符的值是否一样。
  3. 这里包含一个隐式转化。需要用到第一点中的知识。
  4. 个人理解:==的判断

在做这道题之前我们先来看以下几个式子:

        console.log([]==true);//false
        console.log(([])==true);//false
        console.log({}==true);//false
        console.log(({})==true);//false

        console.log([]==false);//true
        console.log(([])==false);//true
        console.log({}==false);//false
        console.log(({})==false);//false
        
        console.log(Number({}));//NaN
        console.log(Number(({})));//NaN
     	console.log(Number([]));//0
        console.log(Number(([])));//0

上面第一行的式子中就是涉及到了隐式转换,这边我们参考规律的第四条,全部转换为number类型,我们先看第三块的代码块。这里我测试的结果是:不管是不是被()包裹转化的结果都是一致的。再回到第一二个代码块,我们就能很快捷的知道结果。结果见代码注释。

这里最主要的是[]这里转换实际上是去转的''然后空串是转化为false最终转化为0,然而{}最终转化为NaN

我们在会过来看面试题:
第一行中判断[]是否为true根据上面规律第四条,我们可以知道[]是转换为0的,false也是转化为0的,所以最后结果为true
第二行中和第一行差不多的,左边和右边都为0所以最后输出true
第三行中{}转化为数字类型为NaN,右边为0所以为false

最后结果为 true true false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值