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

后端 未结 4 983
挽巷
挽巷 2020-12-11 18:58

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

{} instanceof Object

results in this error message:

相关标签:
4条回答
  • 2020-12-11 19:33

    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
    
    0 讨论(0)
  • 2020-12-11 19:36

    {}, 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;
    
    0 讨论(0)
  • 2020-12-11 19:38

    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.

    0 讨论(0)
  • 2020-12-11 19:39

    Try

    var p = {}
    p instanceof Object
    
    0 讨论(0)
提交回复
热议问题