What is the difference? I looked at the ECMAScript specification, but did not understand. The real code examples that would help much.
If you can explain every line here it would be nice
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
CallExpression :
MemberExpression Arguments
CallExpression Arguments
CallExpression [ Expression ]
CallExpression . IdentifierName
For example
console.log - MemberExpression: MemberExpression . IdentifierName
console.log("hi") - CallExpression : MemberExpression Arguments
What is will be equal
CallExpression : CallExpression . IdentifierName
CallExpression [ Expression ]
CallExpression : CallExpression Arguments
Link for ES http://www.ecma-international.org/ecma-262/5.1/#sec-11.2
func()
is a CallExpression
thing.func
is a MemberExpression
thing
is the object
of the MemberExpression
func
is the property
of the MemberExpression
thing.func()
is a MemberExpression
within a CallExpression
thing.func
is the callee
of the CallExpression
Source: astexplorer.net.
The relevant parts here are
NewExpression: MemberExpression new NewExpression LeftHandSideExpression: NewExpression CallExpression
which distinguishes the three major left hand side expressions:
And all of them with member accesses in the right places. As such, the difference between the productions you listed is just that a CallExpression
always contains a call - and may therefore not be part of the expression after a new
operator.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With