【问题标题】:The result of []==false is true, why?[]==false 的结果为真,为什么?
【发布时间】:2023-02-01 14:51:58
【问题描述】:

在 ES5 中,抽象相等比较算法:

如果Type(X) 为布尔型,返回比较结果 ToNumber(X) ==.

To Number转换算法:如果x是一个Object,第一步是获取primValue,然后返回ToNumber(primValue)。

原始转换算法:返回对象的默认值。对象的默认值通过调用对象的 [[DefaultValue]] 内部方法来检索,传递可选的提示首选类型。

[[DefaultValue]] 使用“valueOf”方法,并返回一个原始值。

问题是:Object.ValueOf 方法获取的是对象值而不是原始值。这让我很困惑。

let a=[]
let b=a.valueOf()// object a
console.log(b)
let c=a.toString()//undefined
console.log(c)
typeof b //object
typeof c //string

【问题讨论】:

标签: javascript


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 2015-05-09
  • 2023-01-13
  • 2021-09-19
  • 2023-01-13
相关资源
最近更新 更多