CallExpression和MemberExpression之间的区别

时间:2017-12-26 00:20:57

标签: javascript ecmascript-6

有什么区别?我查看了ECMAScript规范,但不明白。真正有用的代码示例。

如果你能在这里解释每一行,那就很好了

MemberExpression : 
 PrimaryExpression 
 FunctionExpression
 MemberExpression [ Expression ] 
 MemberExpression . IdentifierName 

CallExpression : 
 MemberExpression Arguments
 CallExpression Arguments 
 CallExpression [ Expression ] 
 CallExpression . IdentifierName

例如

console.log - MemberExpression: MemberExpression . IdentifierName
console.log("hi") - CallExpression : MemberExpression Arguments

什么是平等的

CallExpression : CallExpression . IdentifierName
CallExpression [ Expression ]
CallExpression : CallExpression Arguments 

ES http://www.ecma-international.org/ecma-262/5.1/#sec-11.2

的链接

2 个答案:

答案 0 :(得分:5)

  • func()CallExpression
  • thing.funcMemberExpression
    • thingobject
    • MemberExpression
    • funcproperty
    • MemberExpression
  • thing.func()MemberExpression中的CallExpression
    • thing.funccallee
    • CallExpression

来源:astexplorer.net

答案 1 :(得分:1)

这里的相关部分是

NewExpression:
    MemberExpression
    new NewExpression
LeftHandSideExpression:
    NewExpression
    CallExpression

区分了三个主要的左手边表达式:

  • 构造函数调用
  • 功能/方法调用
  • 主要表达

所有这些都在会员访问的地方。因此,您列出的作品之间的差异只是CallExpression总是包含一个调用 - 因此可能不是new运算符后表达式的一部分。