Program (script) @3:1 ├─ FunctionDeclaration "defaults" @3:1 │ ├─ parameters │ │ ├─ Identifier "a" [argument:0] @3:19 │ │ └─ Identifier "b" [argument:1] @3:19 │ │ └─ default │ │ └─ BinaryExpression (+) @3:28 │ │ ├─ Identifier "a" [argument:0] @3:26 │ │ └─ NumericLiteral 1 @3:30 │ └─ body │ └─ FunctionBody @4:5 │ ├─ VariableDeclaration (let) @4:5 │ │ └─ VariableDeclarator @4:5 │ │ ├─ Identifier "c" [variable:0] (let) @4:9 │ │ └─ Identifier "b" [argument:1] @4:13 │ └─ ReturnStatement @5:5 │ └─ Identifier "c" [variable:0] (let) @5:12 ├─ FunctionDeclaration "default_with_closure" @9:1 │ ├─ parameters │ │ ├─ Identifier "x" @9:31 │ │ └─ Identifier "f" [argument:1] @9:31 │ │ └─ default │ │ └─ FunctionExpression "" [arrow] @9:38 │ │ └─ body │ │ └─ FunctionBody @9:38 │ │ └─ ReturnStatement @9:38 │ │ └─ Identifier "x" @9:44 │ └─ body │ └─ FunctionBody @10:5 │ ├─ VariableDeclaration (let) @10:5 │ │ └─ VariableDeclarator @10:5 │ │ ├─ Identifier "x2" [variable:0] (let) @10:9 │ │ └─ CallExpression @10:15 │ │ └─ Identifier "f" [argument:1] @10:14 │ └─ ReturnStatement @11:5 │ └─ Identifier "x2" [variable:0] (let) @11:12 ├─ FunctionDeclaration "complex_defaults" @16:1 │ ├─ parameters │ │ └─ Identifier "a" [argument:0] @16:27 │ │ └─ default │ │ └─ NumericLiteral 1 @16:31 │ └─ body │ └─ FunctionBody @17:5 │ ├─ VariableDeclaration (var) @17:5 │ │ └─ VariableDeclarator @17:5 │ │ ├─ Identifier "v" [variable:0] (var) @17:9 │ │ └─ Identifier "a" [argument:0] @17:13 │ ├─ VariableDeclaration (let) @18:5 │ │ └─ VariableDeclarator @18:5 │ │ ├─ Identifier "l" [variable:1] (let) @18:9 │ │ └─ Identifier "a" [argument:0] @18:13 │ └─ ReturnStatement @19:5 │ └─ BinaryExpression (+) @19:14 │ ├─ Identifier "v" [variable:0] (var) @19:12 │ └─ Identifier "l" [variable:1] (let) @19:16 └─ FunctionDeclaration "destruct_defaults" @23:1 ├─ parameters │ └─ BindingPattern (object) │ └─ entry │ ├─ name │ │ └─ Identifier "x" [variable:0] @23:30 │ └─ initializer │ └─ NumericLiteral 10 @23:34 │ └─ default │ └─ ObjectExpression @23:41 └─ body └─ FunctionBody @24:5 └─ ReturnStatement @24:5 └─ Identifier "x" [variable:0] @24:12