{{jsSidebar("Statements")}}
JavaScript applications consist of statements with an appropriate syntax. A single statement may span multiple lines. Multiple statements may occur on a single line if each statement is separated by a semicolon. This isn't a keyword, but a group of keywords.
Statements and declarations by category
For an alphabetical listing see the sidebar on the left.
Control flow
- {{jsxref("Statements/block", "Block")}}
- A block statement is used to group zero or more statements. The block is delimited by a pair of curly brackets.
- {{jsxref("Statements/break", "break")}}
- Terminates the current loop, switch, or label statement and transfers program control to the statement following the terminated statement.
- {{jsxref("Statements/continue", "continue")}}
- Terminates execution of the statements in the current iteration of the current or labeled loop, and continues execution of the loop with the next iteration.
- {{jsxref("Statements/Empty", "Empty")}}
- An empty statement is used to provide no statement, although the JavaScript syntax would expect one.
-
if...else
- Executes a statement if a specified condition is true. If the condition is false, another statement can be executed.
- {{jsxref("Statements/switch", "switch")}}
- Evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case.
- {{jsxref("Statements/throw", "throw")}}
- Throws a user-defined exception.
-
try...catch
- Marks a block of statements to try, and specifies a response, should an exception be thrown.
Declarations
- {{jsxref("Statements/var", "var")}}
- Declares a variable, optionally initializing it to a value.
- {{experimental_inline()}} {{jsxref("Statements/let", "let")}}
- Declares a block scope local variable, optionally initializing it to a value.
- {{experimental_inline()}} {{jsxref("Statements/const", "const")}}
- Declares a read-only named constant.
Functions
- {{jsxref("Statements/function", "function")}}
- Declares a function with the specified parameters.
- {{experimental_inline()}} {{jsxref("Statements/function*", "function*")}}
- Generators functions enable writing iterators more easily.
- {{jsxref("Statements/return", "return")}}
- Specifies the value to be returned by a function.
Iterations
-
do...while
- Creates a loop that executes a specified statement until the test condition evaluates to false. The condition is evaluated after executing the statement, resulting in the specified statement executing at least once.
-
for
- Creates a loop that consists of three optional expressions, enclosed in parentheses and separated by semicolons, followed by a statement executed in the loop.
-
{{deprecated_inline()}} {{non-standard_inline()}}
for each...in
- Iterates a specified variable over all values of object's properties. For each distinct property, a specified statement is executed.
-
for...in
- Iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.
-
{{experimental_inline()}}
for...of
- Iterates over iterable objects (including arrays, array-like objects, iterators and generators), invoking a custom iteration hook with statements to be executed for the value of each distinct property.
- {{jsxref("Statements/while", "while")}}
- Creates a loop that executes a specified statement as long as the test condition evaluates to true. The condition is evaluated before executing the statement.
Others
- {{jsxref("Statements/debugger", "debugger")}}
- Invokes any available debugging functionality. If no debugging functionality is available, this statement has no effect.
- {{experimental_inline()}} {{jsxref("Statements/export", "export")}}
- Used to export functions to make them available for imports in external modules, another scripts.
- {{experimental_inline()}} {{jsxref("Statements/import", "import")}}
- Used to import functions exported from an external module, another script.
- {{jsxref("Statements/label", "label")}}
-
Provides a statement with an identifier that you can refer to using a
break
orcontinue
statement.
- {{deprecated_inline()}} {{jsxref("Statements/with", "with")}}
- Extends the scope chain for a statement.
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition. | Standard | Initial definition. |
{{SpecName('ES5.1', '#sec-12', 'Statements')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}} | {{Spec2('ES6')}} | New: function*, let, for...of, yield |