org.eclipse.wst.jsdt.core.dom

## Class ForOfStatement

- java.lang.Object
- - org.eclipse.wst.jsdt.core.dom.ASTNode
  - - org.eclipse.wst.jsdt.core.dom.ProgramElement
    - - org.eclipse.wst.jsdt.core.dom.Statement
      - - org.eclipse.wst.jsdt.core.dom.ForOfStatement

    public class ForOfStatement
    extends Statement

For...of statement AST node type.

     for (variable of object) {
        statement
     }

Note: When variables are declared in the initializer of a for statement such as "`for (var i of collection);`", they should be represented as a single `VariableDeclarationStatement`

Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

Since:
  2.0

### Field Summary

Fields
`static ChildPropertyDescriptor` `BODY_PROPERTY` The "body" structural property of this node type.
`static ChildPropertyDescriptor` `COLLECTION_PROPERTY` The "expression" structural property of this node type.
`static ChildPropertyDescriptor` `ITERATION_VARIABLE_PROPERTY` The "iteration variable" structural property of this node type.

### Fields inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_NAME, ARRAY_TYPE, ARROW_FUNCTION_EXPRESSION, ASSIGNMENT, ASSIGNMENT_NAME, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, DEBUGGER_STATEMENT, DO_STATEMENT, EMPTY_EXPRESSION, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, EXPORT_DECLARATION, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_IN_STATEMENT, FOR_OF_STATEMENT, FOR_STATEMENT, FUNCTION_DECLARATION, FUNCTION_DECLARATION_STATEMENT, FUNCTION_EXPRESSION, FUNCTION_INVOCATION, FUNCTION_REF, FUNCTION_REF_PARAMETER, IF_STATEMENT, IMPORT_DECLARATION, INFERRED_TYPE, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, JAVASCRIPT_UNIT, JSDOC, LABELED_STATEMENT, LINE_COMMENT, LIST_EXPRESSION, MALFORMED, MEMBER_REF, META_PROPERTY, MODIFIER, MODULE_SPECIFIER, NULL_LITERAL, NUMBER_LITERAL, OBJECT_LITERAL, OBJECT_LITERAL_FIELD, OBJECT_NAME, ORIGINAL, PACKAGE_DECLARATION, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, REGULAR_EXPRESSION_LITERAL, REST_ELEMENT_NAME, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_VARIABLE_DECLARATION, SPREAD_ELEMENT, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SWITCH_CASE, SWITCH_STATEMENT, TAG_ELEMENT, TEMPLATE_ELEMENT, TEMPLATE_LITERAL, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_EXPRESSION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, UNDEFINED_LITERAL, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WITH_STATEMENT, YIELD_EXPRESSION`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`Statement` `getBody()` Returns the body of this for statement.
`Expression` `getCollection()` Returns the condition expression of this for statement, or `null` if there is none.
`Expression` `getIterationVariable()`
`static java.util.List` `propertyDescriptors(int apiLevel)` Returns a list of structural property descriptors for this node type.
`void` `setBody(Statement statement)` Sets the body of this for statement.
`void` `setCollection(Expression expression)` Sets or clears the condition expression of this return statement.
`void` `setIterationVariable(Expression expression)`

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.Statement

`getLeadingComment, setLeadingComment`

### Methods inherited from class org.eclipse.wst.jsdt.core.dom.ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getBodyChild, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### ITERATION_VARIABLE_PROPERTY

    public static final ChildPropertyDescriptor ITERATION_VARIABLE_PROPERTY

The "iteration variable" structural property of this node type.

#### COLLECTION_PROPERTY

    public static final ChildPropertyDescriptor COLLECTION_PROPERTY

The "expression" structural property of this node type.

#### BODY_PROPERTY

    public static final ChildPropertyDescriptor BODY_PROPERTY

The "body" structural property of this node type.

### Method Detail

#### propertyDescriptors

    public static java.util.List propertyDescriptors(int apiLevel)

Returns a list of structural property descriptors for this node type. Clients must not modify the result.

Parameters:
  `apiLevel` - the API level; one of the `AST.JLS*` constants
Returns:
  a list of property descriptors (element type: `StructuralPropertyDescriptor`)

#### getCollection

    public Expression getCollection()

Returns the condition expression of this for statement, or `null` if there is none.

Returns:
  the condition expression node, or `null` if there is none

#### getIterationVariable

    public Expression getIterationVariable()

#### setCollection

    public void setCollection(Expression expression)

Sets or clears the condition expression of this return statement.

Parameters:
  `expression` - the condition expression node, or `null` if there is none
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created

#### setIterationVariable

    public void setIterationVariable(Expression expression)

#### getBody

    public Statement getBody()

Returns the body of this for statement.

Returns:
  the body statement node

#### setBody

    public void setBody(Statement statement)

Sets the body of this for statement.

Special note: The JavaScript language does not allow a local variable declaration to appear as the body of a for statement (they may only appear within a block). However, the AST will allow a `VariableDeclarationStatement` as the body of a `ForStatement`. To get something that will compile, be sure to embed the `VariableDeclarationStatement` inside a `Block`.

Parameters:
  `statement` - the body statement node
Throws:
  `java.lang.IllegalArgumentException` - if:
  - the node belongs to a different AST
  - the node already has a parent
  - a cycle in would be created