【问题标题】:Difference between CallExpression and MemberExpressionCallExpression 和 MemberExpression 的区别
【发布时间】:2018-06-06 23:03:33
【问题描述】:

有什么区别?我查看了 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

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    这里的相关部分是

    新表达式成员表达式
        新的新表达式
    LeftHandSideExpression新表达式
        CallExpression

    区分三个主要的左侧表达式:

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

    并且所有这些都在正确的位置具有成员访问权限。因此,您列出的产品之间的区别只是 CallExpression 始终包含一个调用 - 因此可能不是 newoperator 之后表达式的一部分。

    【讨论】:

    • 解释一下MemberExpression . IdentifierNameCallExpression . IdentifierName的区别
    • 我读过!但是你能给我举个例子CallExpression . IdentifierNameCallExpression Arguments 我不知道会怎样(MemberExpression . IdentifierNameMemberExpression Arguments 我可以想象)。
    • @MaximPro member().callPropertymember()()(对比 member.memberPropertymember())。
    • 有趣。 MemberExpression Arguments - 是CallExpression 对吗?
    • 是的,这就是你的问题:CallExpression : MemberExpression Arguments
    【解决方案2】:
    • func()CallExpression
    • thing.funcMemberExpression
      • thingMemberExpressionobject
      • funcpropertyMemberExpression
    • thing.func()MemberExpression 内的 CallExpression
      • thing.funccalleeCallExpression

    来源:astexplorer.net

    【讨论】:

    • 你能用这个ecma-international.org/ecma-262/5.1/#sec-11.2给我解释一下吗(关于每一行 MemberExpression 和 CallExpression),尤其是 MemberExpression [ Expression ]CallExpression [ Expression ]MemberExpression 。表达式CallExpression 。表达式
    • 他们通过列举它们可以包含的其他表达式来定义各种Expressions 的语法。如果您想了解它们全部的含义,请参阅 JavaScript 解析器的 AST 规范,例如 babylon
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2011-10-20
    • 2020-01-23
    相关资源
    最近更新 更多