[js面试题] console.log( [] == ![] );结果是?

结果: true

1.根据运算符优先级,先算逻辑非(具体参考优先级表)

    只有 '' 0 NaN null undefined转换布尔值后 是false

    console.log(![ ]);  // true    接下来判断 console.log( [ ] == false); 也就是空数组(object类型)和false(基本数据类型)比较结果

2. 当基本类型和object类型比较时,先将object类型转化为基本数据类型

     转换规则:

  1.  调用valueOf( )方法  默认返回对象原始值
  2.  调用 toString( )方法  默认返回对象的字符串值

例如:

        var num = 123;
        var arr = [];
        var obj = {};
        console.log(num.valueOf()); // 123
        console.log(arr.valueOf()); // []
        console.log(obj.valueOf()); // {}
        
        console.log(num.toString()); // '123'
        console.log(arr.toString()); // ''
        console.log(obj.toString()); // [object Object]

 回归正题: 判断 console.log( [ ] == false);

        console.log([ ].valeOf( )); // [ ]

        console.log([ ].toString( )); // ' '

        接下来判断 console.log ( ' '  == false);

3. 字符串和布尔值比较时 都转为数字 

        console.log(Number(' ')); // 0

        console.log(Number(false));  // 0

 4. console.log( 0 == 0 ); // true  所以答案为true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值