# Class Stmt::FunctionDeclStmt

A function declaration statement.

Example:

```
function abs(x) {
return abs < 0 ? -abs : abs;
}
```

## Direct supertypes

## Indirect supertypes

- @ast_node
- @ast_node_with_symbol
- @cfg_node
- @dataflownode
- @declarablestmt
- @exprorstmt
- @exprparent
- @function
- @locatable
- @parameterized
- @sourceline
- @stmt
- @stmt_container
- @stmtparent
- @type_parameterized
- @typed_ast_node
- @typeexpr_parent
- ASTNode
- ControlFlowNode
- Documentable
- ExprOrStmt
- Locatable
- Parameterized
- StmtContainer
- TypeParameterized
- ValueNode

## Known direct subtypes

## Predicates

getEnclosingStmt | Gets the statement enclosing this function, if any. |

isAmbient | Holds if this is part of an ambient declaration or type annotation in a TypeScript file. |

## Inherited predicates

analyze | Gets type inference results for this element. | from ValueNode |

declaresArguments | Holds if this function declares a parameter or local variable named | from Function |

describe | Gets a description of this function. | from Function |

describeControlFlowNode | For internal use. | from ControlFlowNode |

flow | Gets the data flow node associated with this program element. | from ValueNode |

getABodyStmt | Gets a statement in the body of this function. | from Function |

getAChild | Gets a child node of this node. | from ASTNode |

getAChildExpr | Gets a child expression of this node. | from ASTNode |

getAChildStmt | Gets a child statement of this node. | from ASTNode |

getAParameter | Gets a parameter of this function. | from Function |

getAPredecessor | Gets a node preceding this node in the CFG. | from ControlFlowNode |

getAReturnStmt | Gets a return statement in the body of this function, if any. | from Function |

getAReturnedExpr | Gets an expression that could be returned by this function, if any. | from Function |

getAStmt | Gets a statement that belongs to this container. | from StmtContainer |

getASuccessor | Gets a node succeeding this node in the CFG. | from ControlFlowNode |

getAToken | Gets a token belonging to this element. | from ASTNode |

getATypeParameter | Gets any type parameter declared on this function or type. | from TypeParameterized |

getArgumentsVariable | Gets the | from Function |

getBasicBlock | Gets the basic block this node belongs to. | from ControlFlowNode |

getBody | Gets the body of this function. | from Function |

getBodyStmt | Gets the | from Function |

getCanonicalName | Gets the canonical name for this function, as determined by the TypeScript compiler. | from Function |

getChild | Gets the | from ASTNode |

getChildExpr | Gets the | from ASTNode |

getChildStmt | Gets the | from ASTNode |

getChildTypeExpr | Gets the | from ASTNode |

getContainer | Gets the statement container (toplevel, function or namespace) to which this statement belongs. | from Stmt |

getCyclomaticComplexity | Gets the cyclomatic complexity of this function. | from Function |

getDocumentation | Gets the JSDoc comment for this element, if any. | from Documentable |

getEnclosingContainer | Gets the enclosing function or toplevel of this function. | from Function |

getEndLine | Gets the line on which this element ends. | from Locatable |

getEntry | Gets the (unique) entry node of the control flow graph for this toplevel or function. | from StmtContainer |

getEntryBB | Gets the entry basic block of this function, that is, the basic block containing the entry node of its CFG. | from StmtContainer |

getExit | Gets the (unique) exit node of the control flow graph for this toplevel or function. | from StmtContainer |

getFile | Gets the file this program element comes from. | from Locatable |

getFirstControlFlowNode | Gets the first control flow node belonging to this syntactic entity. | from ASTNode |

getFirstToken | Gets the first token belonging to this element. | from ASTNode |

getFunctionBoundary | Gets the innermost enclosing function or top-level, possibly this container itself if it is a function or top-level. | from StmtContainer |

getId | Gets the identifier specifying the name of this function, if any. | from Function |

getKind | Gets the kind of this statement, which is an integer value representing the statement’s node type. | from Stmt |

getLastToken | Gets the last token belonging to this element. | from ASTNode |

getLocation | Gets this element’s location. | from ASTNode |

getName | Gets the name of this function if it has one, or a name inferred from its context. | from Function |

getNumBodyStmt | Gets the number of statements in the body of this function. | from Function |

getNumChild | Gets the number of child nodes of this node. | from ASTNode |

getNumChildExpr | Gets the number of child expressions of this node. | from ASTNode |

getNumChildStmt | Gets the number of child statements of this node. | from ASTNode |

getNumLines | Gets the number of lines covered by this element. | from Locatable |

getNumParameter | Gets the number of parameters declared by this element. | from Parameterized |

getNumTypeParameter | Gets the number of type parameters declared on this function or type. | from TypeParameterized |

getNumberOfLines | Gets the number of lines in this function. | from Function |

getNumberOfLinesOfCode | Gets the number of lines containing code in this function. | from Function |

getNumberOfLinesOfComments | Gets the number of lines containing comments in this function. | from Function |

getParameter | Gets the | from Function |

getParameterByName | Gets the parameter named | from Function |

getParameterVariable | Gets a variable of the given name that is a parameter of this element. | from Parameterized |

getParent | Gets the parent node of this node, if any. | from ASTNode |

getParentStmt | Gets the statement that is the parent of this statement in the AST, if any. | from Stmt |

getReturnTypeAnnotation | Gets the return type annotation on this function, if any. | from Function |

getScope | Gets the scope induced by this toplevel or function, if any. | from StmtContainer |

getStart | Gets the (unique) CFG node at which execution of this toplevel or function begins. | from StmtContainer |

getStartBB | Gets the start basic block of this function, that is, the basic block containing the start node of its CFG. | from StmtContainer |

getStartLine | Gets the line on which this element starts. | from Locatable |

getThisBinder | Gets the function whose | from Function |

getThisBindingContainer | Gets the function or top-level whose | from Function |

getThisTypeAnnotation | Gets the type annotation for the special | from Function |

getTopLevel | Gets the toplevel syntactic unit to which this element belongs. | from ASTNode |

getTypeParameter | Gets the | from Function |

getVariable | Gets the variable holding this function. | from Function |

hasBody | Holds if this function has a body. | from Function |

hasMappedArgumentsVariable | Holds if this function has a mapped | from Function |

hasRestParameter | Holds if the last parameter of this function is a rest parameter. | from Function |

hasSemicolonInserted | Holds if this statement has an implicitly inserted semicolon. | from Stmt |

hasTrailingComma | Holds if the parameter list of this function has a trailing comma. | from Function |

hasTypeParameters | Holds if this function or type declares any type parameters. | from TypeParameterized |

inExternsFile | Holds if this syntactic entity belongs to an externs file. | from ASTNode |

isAFinalNode | Holds if this is a final node, that is, a CFG node where execution of a toplevel or function terminates. | from ControlFlowNode |

isAbstract | Holds if this function is part of an abstract class member. | from Function |

isAsync | Holds if this function is an asynchronous function. | from Function |

isBranch | Holds if this is a node with more than one successor. | from ControlFlowNode |

isGenerator | Holds if this function is a generator function. | from Function |

isJoin | Holds if this is a node with more than one predecessor. | from ControlFlowNode |

isNonConstructible | Holds if this function cannot be invoked using | from Function |

isStart | Holds if this is a start node, that is, the CFG node where execution of a toplevel or function begins. | from ControlFlowNode |

isStrict | Holds if the code in this container is executed in ECMAScript strict mode. | from Function |

isSubjectToSemicolonInsertion | Holds if automatic semicolon insertion applies to this statement. | from Stmt |

isUnreachable | Holds if this node is unreachable, that is, it has no predecessors in the CFG. Entry nodes are always considered reachable. | from ControlFlowNode |

nestedIn | Holds if this statement is lexically nested inside statement | from Stmt |

toString | Gets a textual representation of this element. | from Stmt |

usesArgumentsObject | Holds if the body of this function refers to the function’s | from Function |