永发信息网

javascript 代码alert([] ==![]);为什么弹出结果为true?

答案:2  悬赏:40  手机版
解决时间 2021-03-27 15:34
  • 提问者网友:动次大次蹦擦擦
  • 2021-03-27 00:24
javascript 代码alert([] ==![]);为什么弹出结果为true?
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-03-27 01:55
typeof([])是个object typeof(![])就成了Boolean
alert([])是个空 alert(![]) 是个false javascript中一切空或者0在做比较的时候都会转化成boolean值false所以 答案很明显了 false equals false

楼上的答案不标准,也可以说有些错误。
执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-03-27 02:05
!的优先级较==高,先运算==左侧的操作数:[]是对象,会转换成true,然后再转成false(加!的一定是转换成boolean)
== 的左操作数是[],数组(对象除了日期对象,都是对象到数字的转换),碰到==要先调用自己的valueOf()方法=>[](还是本身),然后调用自己的toString()方法=>空字符串=>false (或者空字符串转成0,然后再转成false,但是终归会是false)
false==false
弹true
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯