输入Chrome js控制台时,我对以下代码感到惊讶:
{} instanceof Object
导致出现此错误消息:
Uncaught SyntaxError:意外的令牌实例
任何人都可以告诉我为什么会这样,以及如何解决它?
答案 0 :(得分:12)
instanceof 的语法是:
RelationalExpression instanceof ShiftExpression
per ECMA-262 §11.8。
语句开头的标点符号{
被视为块的开头,因此以下}
关闭块并结束语句。
以下instanceof
运算符是下一个语句的开头,但它不能在开头,因为它必须在 RelationalExpression 之前,因此解析器得到一个惊喜。
你需要通过在语句的开头添加其他内容来强制{}
被视为对象文字,例如
({}) instanceof Object
答案 1 :(得分:3)
{}
,在该上下文中,是块,而不是对象文字。
您需要更改上下文(例如,将其包装在(
和)
中)以使其成为对象文字。
({}) instanceof Object;
答案 2 :(得分:1)
如果您尝试这样做:
var a = {}
a instanceof Object
输出true
,这是预期的输出。
但是,在您的情况下
{} instanceof Object
上述情况并非如此。
后者与第一个相同。在第一种情况下,我们创建一个对象文字,而在第二种情况下,我们不会。因此,您会收到此错误。
答案 3 :(得分:1)
尝试
var p = {}
p instanceof Object