请问js中({})是什么意思

在做笔试题的时候遇到这个问题
({}) == '[object Object]',请问这个式子怎么理解呢

阅读 5.1k
3 个回答

({})就是 js 中的对象,因为放在开头可能会被识别为代码块,所以加了括号。
相等运算符==。对象会转化为原始数据类型,此处{}先后调用valueOf() 和 toString() 方法。
Object.prototype.toString() 方法最终会返回诸如'[object Object]'形式的字符串。其中 Object 为{}的对象类型。
所以为 true。

能考两个点

  1. ({})不能写成{},是因为如果表达式开头是花括号,会被解析成代码块。如果不放开头不会
  2. ({}) == '[object Object]' ,根据JS规范,符合标准相等比较的第九条“Type(x)是个Object,而Type(y)是Number或String其中一种时,进行ToPrimitive(x) == y比较”。所以隐式转换后为true
推荐问题
宣传栏