Understanding JavaScript terminology and notation

Consider the Section. 11.2 ECMA-262.

Syntax
MemberExpression :
    PrimaryExpression
    FunctionExpression
    MemberExpression [ Expression ]
    MemberExpression . IdentifierName
    new MemberExpression Arguments
NewExpression :
    MemberExpression
    new NewExpression
CallExpression :
    MemberExpression Arguments
    CallExpression Arguments
    CallExpression [ Expression ]
    CallExpression . IdentifierName
Arguments :
    ( )
    ( ArgumentList )
ArgumentList :
    AssignmentExpression
    ArgumentList , AssignmentExpression
LeftHandSideExpression :
    NewExpression
    CallExpression

PrimaryExpression is as follows

PrimaryExpression :
    this 
    Identifier 
    Literal 
    ArrayLiteral 
    ObjectLiteral 
    ( Expression )

first question :

What does ( Expression )the definition mean PrimaryExpression?

{prop: 'prop'}- ObjectLiteral. So there {prop: 'prop'}()is CallExpression. I am trying to verify this with JSFIDDLE , but I have

[20:16:12.347] SyntaxError: syntax error @ http://fiddle.jshell.net/_display/:21

second question : Why was this error caused? I think that {prop: 'prop'}()is the correct line, and I rule out that the error will look like {prop: 'prop'} is not a function.

UPD: I am using firefox 25.0.1

+4
source share
2 answers

As for the big question:

() ?

, .

JavaScript- ,

var o = "Hello" +({stuff:"stuff"}); 

, .

- , .

.

, . - , 3+5+3/(5+3).

- . :

<expression> ::= <term> | <expression> "+" <term>
<term>       ::= <factor> | <term> "*" <factor>
<factor>     ::= <constant> | <variable> | "(" <expression> ")"
<variable>   ::= "x" | "y" | "z" 
<constant>   ::= <digit> | <digit> <constant>
<digit>      ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

, <factor> "(" <expression> ")" , .

{}:

{prop: 'prop'} , .

- , 11.2 .

12 - statement:

Syntax

Statement :
    Block
    VariableStatement
    EmptyStatement
    ExpressionStatement
    IfStatement
    IterationStatement
    ContinueStatement
    BreakStatement
    ReturnStatement
    WithStatement
    LabelledStatement
    SwitchStatement
    ThrowStatement
    TryStatement
    DebuggerStatement

Block - 12.1 - Block, , , :

Block :    
    { StatementListopt }
    StatementList :
    Statement
    StatementList Statement
    Semantics

, , StatementList a Block.

prop: prop. prop: LabelledStatement, .

. , .

+1

:

( Expression ) a (, a Expression, a ).


:

{prop: 'prop'}()

:

// a block
{
    // syntax error
    prop: 'prop'
}
// syntax error
()

parens, :

({prop: 'prop'}())

, :

var obj = {prop: 'prop'}
obj()
+2

All Articles