Tengo ax = by
para ser el nodo AST:
{ "type": "ExpressionStatement", "start": 122, "end": 131, "expression": { "type": "AssignmentExpression", "start": 122, "end": 131, "operator": "=", "left": { "type": "MemberExpression", "start": 122, "end": 125, "object": { "type": "Identifier", "start": 122, "end": 123, "name": "a" }, "property": { "type": "Identifier", "start": 124, "end": 125, "name": "x" }, "computed": false, "optional": false }, "right": { "type": "MemberExpression", "start": 128, "end": 131, "object": { "type": "Identifier", "start": 128, "end": 129, "name": "b" }, "property": { "type": "Identifier", "start": 130, "end": 131, "name": "y" }, "computed": false, "optional": false } } }
¿Qué significa computed
y optional
? ¿Cuáles son algunos ejemplos?
Así es como luce ab[cd[e].f].g
:
{ "type": "Program", "body": [ { "type": "MemberExpression", "object": { "type": "MemberExpression", "object": { "type": "MemberExpression", "object": { "type": "Identifier", "start": 1, "end": 2, "name": "a" }, "property": { "type": "Identifier", "start": 3, "end": 4, "name": "b" }, "computed": false }, "property": { "type": "MemberExpression", "object": { "type": "MemberExpression", "object": { "type": "MemberExpression", "object": { "type": "Identifier", "start": 5, "end": 6, "name": "c" }, "property": { "type": "Identifier", "start": 7, "end": 8, "name": "d" }, "computed": false }, "property": { "type": "Identifier", "start": 9, "end": 10, "name": "e" }, "computed": true }, "property": { "type": "Identifier", "start": 12, "end": 13, "name": "f" }, "computed": false }, "computed": true }, "property": { "type": "Identifier", "start": 15, "end": 16, "name": "g" }, "computed": false } ] }
El computed
es para object[property]
.