Program (script) [strict] @1:1 ├─ ExpressionStatement @1:1 │ └─ StringLiteral "use strict" @1:13 ├─ FunctionDeclaration "strict_function" [strict] @3:1 │ ├─ parameters │ │ ├─ Identifier "a" [argument:0] @3:26 │ │ └─ Identifier "b" [argument:1] @3:26 │ └─ body │ └─ FunctionBody @4:5 │ ├─ VariableDeclaration (let) @4:5 │ │ └─ VariableDeclarator @4:5 │ │ ├─ Identifier "c" [variable:0] (let) @4:9 │ │ └─ BinaryExpression (+) @4:15 │ │ ├─ Identifier "a" [argument:0] @4:13 │ │ └─ Identifier "b" [argument:1] @4:17 │ └─ ReturnStatement @5:5 │ └─ Identifier "c" [variable:0] (let) @5:12 └─ FunctionDeclaration "inner_strict" [strict] @8:1 └─ body └─ FunctionBody @9:5 ├─ ExpressionStatement @9:5 │ └─ StringLiteral "use strict" @9:17 ├─ VariableDeclaration (let) @10:5 │ └─ VariableDeclarator @10:5 │ ├─ Identifier "x" [variable:0] (let) @10:9 │ └─ NumericLiteral 1 @10:13 └─ ReturnStatement @11:5 └─ Identifier "x" [variable:0] (let) @11:12