js基础及常考面试题之 [] == ![]结果为true, []==[]结果为false 详解

[] == ![]

第一步: !优先级高于==,故而先计算 ![]; 所有的对象都是true,所以 []true; 所以!true就为false
即: [] == false

第二步:如果有一个操作数为布尔类型,则将布尔类型转化为数值类型
即: [] == 0

第三步: 将另一个操作类型转化为数值类型,[]转化为数值类型为0
0 == 0

故: 结果为 true

[] == []

左右两边类型相同,都是数组类型;但,数组或者对象在比较的时候,是比较他们的引用地址
如: var a = []; var b=a; console.log(a==b) -----------true
原因: a与b都是引用的同一个地址,a与b的随意一个改变,都会引起地址变化.
如: var a= [], b = [] ; console.log(a==b)--------------false
原因: a与b的地址不同

形象例子: 就好比[] 是一笼包子
第一种场景: a买了一笼包子, 并把这一笼子共享给了b, a与b也就共同拥有这一笼包子,谁吃都会减少
第二种场景: a买了一笼子,b也买了一笼子, a吃一个包子,b的那笼包子里并不会减少。

故而: 结果为false

附上==, === 的流程图
在这里插入图片描述

在 JS 中类型转换只有三种情况,分别是:

转换为布尔值
转换为数字
转换为字符串

js中数值转化表格:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值