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
Block
- A block statement is used to group zero or more statements. The block is delimited by a pair of curly brackets.
break
- Terminates the current loop, switch, or label statement and transfers program control to the statement following the terminated statement.
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.
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.
switch
- Evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case.
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
var
- Declares a variable, optionally initializing it to a value.
let
- Declares a block scope local variable, optionally initializing it to a value.
const
- Declares a read-only named constant.
Functions and classes
function
- Declares a function with the specified parameters.
function*
- Generators functions enable writing iterators more easily.
async function
- Declares an async function with the specified parameters.
return
- Specifies the value to be returned by a function.
class
- Declares a class.
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.
-
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.
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.
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
debugger
- Invokes any available debugging functionality. If no debugging functionality is available, this statement has no effect.
export
- Used to export functions to make them available for imports in external modules, another scripts.
import
- Used to import functions exported from an external module, another script.
label
- Provides a statement with an identifier that you can refer to using a
break
orcontinue
statement.
-
with
- Extends the scope chain for a statement.
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) The definition of 'Statements' in that specification. |
Standard | Initial definition |
ECMAScript 3rd Edition (ECMA-262) The definition of 'Statements' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'Statements' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'ECMAScript Language: Statements and Declarations' in that specification. |
Standard | New: function*, let, for...of, yield, class |
ECMAScript Latest Draft (ECMA-262) The definition of 'ECMAScript Language: Statements and Declarations' in that specification. |
Draft |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Legacy generator function | Chrome Geen ondersteuning Nee | Edge Geen ondersteuning Nee | Firefox Geen ondersteuning 2 — 58 | IE Geen ondersteuning Nee | Opera Geen ondersteuning Nee | Safari Geen ondersteuning Nee | WebView Android Geen ondersteuning Nee | Chrome Android Geen ondersteuning Nee | Firefox Android Geen ondersteuning 4 — 58 | Opera Android Geen ondersteuning Nee | Safari iOS Geen ondersteuning Nee | Samsung Internet Android Geen ondersteuning Nee | nodejs Geen ondersteuning Nee |
async function | Chrome Volledige ondersteuning 55 | Edge Volledige ondersteuning 15 | Firefox Volledige ondersteuning 52 | IE Geen ondersteuning Nee | Opera Volledige ondersteuning 42 | Safari Volledige ondersteuning 10.1 | WebView Android Volledige ondersteuning Ja | Chrome Android Volledige ondersteuning 55 | Firefox Android Volledige ondersteuning 52 | Opera Android Volledige ondersteuning 42 | Safari iOS Volledige ondersteuning 10.3 | Samsung Internet Android Volledige ondersteuning 6.0 | nodejs
Volledige ondersteuning
7.6.0
|
block | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 11 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
break | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
class | Chrome
Volledige ondersteuning
49
| Edge Volledige ondersteuning 13 | Firefox Volledige ondersteuning 45 | IE Geen ondersteuning Nee | Opera Volledige ondersteuning 36 | Safari Volledige ondersteuning 10.1 | WebView Android
Volledige ondersteuning
49
| Chrome Android
Volledige ondersteuning
49
| Firefox Android Volledige ondersteuning 45 | Opera Android ? | Safari iOS Volledige ondersteuning 10.3 | Samsung Internet Android
Volledige ondersteuning
4.0
| nodejs Volledige ondersteuning 6.0.0 |
const | Chrome Volledige ondersteuning 21 | Edge Volledige ondersteuning 12 | Firefox
Volledige ondersteuning
36
| IE Volledige ondersteuning 11 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning 5.1 | WebView Android Volledige ondersteuning Ja | Chrome Android Volledige ondersteuning 25 | Firefox Android
Volledige ondersteuning
36
| Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning Ja | nodejs Volledige ondersteuning Ja |
continue | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
debugger | Chrome Volledige ondersteuning 5 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 4 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
do...while | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 4 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
Empty statement (; ) | Chrome Volledige ondersteuning 3 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
export | Chrome Volledige ondersteuning 61 | Edge
Volledige ondersteuning
16
| Firefox
Volledige ondersteuning
60
| IE Geen ondersteuning Nee | Opera Volledige ondersteuning 47 | Safari Volledige ondersteuning 10.1 | WebView Android Geen ondersteuning Nee | Chrome Android Volledige ondersteuning 61 | Firefox Android
Volledige ondersteuning
60
| Opera Android Volledige ondersteuning 44 | Safari iOS Volledige ondersteuning 10.3 | Samsung Internet Android Volledige ondersteuning 8.0 | nodejs ? |
for | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
for await...of | Chrome Volledige ondersteuning 63 | Edge Geen ondersteuning Nee | Firefox Volledige ondersteuning 57 | IE Geen ondersteuning Nee | Opera Volledige ondersteuning 50 | Safari Volledige ondersteuning 11 | WebView Android Volledige ondersteuning 63 | Chrome Android Volledige ondersteuning 63 | Firefox Android Volledige ondersteuning 57 | Opera Android Volledige ondersteuning 46 | Safari iOS ? | Samsung Internet Android Volledige ondersteuning 8.0 | nodejs
Volledige ondersteuning
10.0.0
|
for each...in | Chrome Geen ondersteuning Nee | Edge Geen ondersteuning Nee | Firefox Geen ondersteuning 1.5 — 57 | IE Geen ondersteuning Nee | Opera Geen ondersteuning Nee | Safari Geen ondersteuning Nee | WebView Android Geen ondersteuning Nee | Chrome Android Geen ondersteuning Nee | Firefox Android Geen ondersteuning 4 — 57 | Opera Android Geen ondersteuning Nee | Safari iOS Geen ondersteuning Nee | Samsung Internet Android Geen ondersteuning Nee | nodejs Geen ondersteuning Nee |
for...in | Chrome Volledige ondersteuning 49 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 6 | Opera Volledige ondersteuning 36 | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 49 | Chrome Android Volledige ondersteuning 49 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning 36 | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 5.0 | nodejs Volledige ondersteuning Ja |
for...of | Chrome Volledige ondersteuning 38 | Edge Volledige ondersteuning 12 | Firefox
Volledige ondersteuning
13
| IE Geen ondersteuning Nee | Opera Volledige ondersteuning 25 | Safari Volledige ondersteuning 8 | WebView Android Volledige ondersteuning 38 | Chrome Android Volledige ondersteuning 38 | Firefox Android
Volledige ondersteuning
14
| Opera Android Volledige ondersteuning 25 | Safari iOS Volledige ondersteuning 8 | Samsung Internet Android Volledige ondersteuning Ja | nodejs Volledige ondersteuning Ja |
function | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
function* | Chrome Volledige ondersteuning 39 | Edge Volledige ondersteuning 13 | Firefox Volledige ondersteuning 26 | IE Geen ondersteuning Nee | Opera Volledige ondersteuning 26 | Safari Volledige ondersteuning 10 | WebView Android Volledige ondersteuning Ja | Chrome Android Volledige ondersteuning 39 | Firefox Android Volledige ondersteuning 26 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning 10 | Samsung Internet Android Volledige ondersteuning 4.0 | nodejs
Volledige ondersteuning
4.0.0
|
if...else | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
import | Chrome Volledige ondersteuning 61 | Edge
Volledige ondersteuning
16
| Firefox
Volledige ondersteuning
60
| IE Geen ondersteuning Nee | Opera Volledige ondersteuning 47 | Safari Volledige ondersteuning 10.1 | WebView Android Volledige ondersteuning 61 | Chrome Android Volledige ondersteuning 61 | Firefox Android
Volledige ondersteuning
60
| Opera Android Volledige ondersteuning 44 | Safari iOS Volledige ondersteuning 10.3 | Samsung Internet Android Volledige ondersteuning 8.0 | nodejs
Volledige ondersteuning
8.5.0
|
import.meta | Chrome Volledige ondersteuning 64 | Edge Geen ondersteuning Nee | Firefox Volledige ondersteuning 62 | IE Geen ondersteuning Nee | Opera Volledige ondersteuning 51 | Safari Volledige ondersteuning 11.1 | WebView Android Volledige ondersteuning 64 | Chrome Android Volledige ondersteuning 64 | Firefox Android Volledige ondersteuning 62 | Opera Android Volledige ondersteuning 47 | Safari iOS Volledige ondersteuning 12 | Samsung Internet Android Volledige ondersteuning 9.0 | nodejs ? |
label | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 4 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
let | Chrome
Volledige ondersteuning
49
| Edge
Volledige ondersteuning
14
| Firefox
Volledige ondersteuning
44
| IE
Gedeeltelijke ondersteuning
11
| Opera Volledige ondersteuning 17 | Safari Volledige ondersteuning 10 | WebView Android
Volledige ondersteuning
49
| Chrome Android
Volledige ondersteuning
49
| Firefox Android
Volledige ondersteuning
44
| Opera Android Volledige ondersteuning 18 | Safari iOS Volledige ondersteuning 10 | Samsung Internet Android
Volledige ondersteuning
5.0
| nodejs Volledige ondersteuning 6.0.0 |
return | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
switch | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 4 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
throw | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 5 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
try...catch | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 5 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
var | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
while | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
with | Chrome Volledige ondersteuning 1 | Edge Volledige ondersteuning 12 | Firefox Volledige ondersteuning 1 | IE Volledige ondersteuning 3 | Opera Volledige ondersteuning Ja | Safari Volledige ondersteuning Ja | WebView Android Volledige ondersteuning 1 | Chrome Android Volledige ondersteuning 18 | Firefox Android Volledige ondersteuning 4 | Opera Android Volledige ondersteuning Ja | Safari iOS Volledige ondersteuning Ja | Samsung Internet Android Volledige ondersteuning 1.0 | nodejs Volledige ondersteuning Ja |
Legenda
- Volledige ondersteuning
- Volledige ondersteuning
- Gedeeltelijke ondersteuning
- Gedeeltelijke ondersteuning
- Geen ondersteuning
- Geen ondersteuning
- Compatibiliteit onbekend
- Compatibiliteit onbekend
- Experimenteel. Het verwachte gedrag kan in de toekomst veranderen.
- Experimenteel. Het verwachte gedrag kan in de toekomst veranderen.
- Niet standaard. Slechte ondersteuning verwacht voor meerdere browsers.
- Niet standaard. Slechte ondersteuning verwacht voor meerdere browsers.
- Verouderd. Niet voor gebruik in nieuwe websites
- Verouderd. Niet voor gebruik in nieuwe websites
- Zie implementatieopmerkingen
- Zie implementatieopmerkingen
- Gebruiker moet deze functie expliciet inschakelen.
- Gebruiker moet deze functie expliciet inschakelen.