为什么对象.toString抛出SyntaxError.片并# 39;t

Why does Object.toString throws SyntaxError while Array.slice doesn't?

本文关键字:片并 SyntaxError 对象 toString 抛出 为什么      更新时间:2023-09-26

为什么在控制台中输入这个:

{}.toString
{}.hasOwnProperty
{}....

抛出SyntaxError,输入:

[].slice
[].filter
({}).toString
({}.toString)

不?

数组和对象的区别是什么?

问题是{符号的模糊性。试试这个:

({}.toString())

当解析器在新语句的开头看到{}时,它必须在

之间进行选择。
  • 这是一个对象文字吗?
  • 这是语句块吗?

它总是选择第二个语句块。因此,{}是一个空语句块,.toString()紧随其后,没有任何意义。

[] —语句开头的[只能是数组字面量的开始(作为表达式语句的一部分)。然而,function关键字也有类似的问题,它作为函数声明语句的开始和函数实例化表达式的开始有双重作用。

因为控制台 {}中的被视为块语句,而不是对象。使用({}):

让它认为它是一个对象
({}).toString