最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Uncaught SyntaxError: Unexpected token instanceof (with Chrome Javascript console) - Stack Overflow

programmeradmin1浏览0评论

I am surprised that the following code when input into the Chrome js console:

{} instanceof Object

results in this error message:

Uncaught SyntaxError: Unexpected token instanceof

Can anyone please tell me why that is and how to fix it?

I am surprised that the following code when input into the Chrome js console:

{} instanceof Object

results in this error message:

Uncaught SyntaxError: Unexpected token instanceof

Can anyone please tell me why that is and how to fix it?

Share Improve this question asked Jan 13, 2015 at 11:05 balteobalteo 24.7k67 gold badges234 silver badges436 bronze badges
Add a comment  | 

4 Answers 4

Reset to default 15

The grammar for instanceof is:

RelationalExpression instanceof ShiftExpression

per ECMA-262 §11.8.

The punctuator { at the start of a statement is seen as the start of a block, so the following } closes the block and ends the statement.

The following instanceof operator is the start of the next statement, but it can't be at the start because it must be preceded by a RelationalExpression, so the parser gets a surprise.

You need to force {} to be seen as an object literal by putting something else at the start of the statement, e.g.

({}) instanceof Object

{}, in that context, is a block, not an object literal.

You need change the context (e.g. by wrapping it in ( and )) to make it an object literal.

({}) instanceof Object;

If you try this:

var a = {}
a instanceof Object

outputs true, which is the expected output.

However, in your case

{} instanceof Object

The above doesn't outputs true.

The latter isn't the same as the first one. In the first case, we create an object literal, while in the second case we don't. Hence you get this error.

Try

var p = {}
p instanceof Object
发布评论

评论列表(0)

  1. 暂无评论