首页 > 试题广场 >

以下表达式,正确的是

[单选题]
以下表达式,正确的是
  • Number('a') == Number('a')
  • -1 == true
  • 3 + '2' === 5
  • ![] == ''
相等和不相等——先转换再比较      (==)
    对于相等和不相等操作符:在JS高程中一书中给出如下的基本转换规则
    ①、如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1;     
    ②、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
    ③、如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较
这两个操作符在进行比较时则要遵循下列规则。
    ①、null 和undefined 是相等的
    ②、要比较相等性之前,不能将null 和 undefined 转换成其他任何值
    ③、如果有一个操作数是NaN,则相等操作符返回 false ,而不相等操作符返回 true。重要提示:即使两个操作数都是NaN,相等操作符也返回 false了;因为按照规则, NaN 不等于 NaN
    ④、如果两个操作数都是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作符返回 true;否则, 返回false
Number('a') == Number('a')
Number('a') //NaN    NaN 不等于 NaN   故为false
!可将变量转换成boolean类型,null、undefined、NaN以及空字符串('')取反都为true,其余都为false。
-1 == true
     true转换为1   -1==1  明显错误,为false
![] == ''
![] 转换为false    也就是 false == ‘’   再转换为0 == ''    将空字符串转换为数值   Number('')   返回的是0   也就是0==0   明显返回值为true

全等和不全等——仅比较而不转换  (===)

发表于 2021-09-03 17:27:07 回复(0)
-1 == true 比较之前先把 true转换为1 -1 == 1 明显false
发表于 2021-08-31 13:22:23 回复(0)
Number('a')//NaN
NaN==NaN//false


D选项比较复杂,详细看链接。
简单来说,就是
![] ==false
''==false
所以![]==''

!可将变量转换成boolean类型,null、undefined、NaN以及空字符串('')取反都为true,其余都为false。
如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较,如果对象没有valueOf()方法,则调用 toString())

而对于空数组,[].toString() ->  '' (返回的是空字符串)

也就是  [] == 0 相当于 '' == 0

发表于 2021-06-24 16:45:04 回复(0)