Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 932337 of Statements and declarations

  • Revision slug: Web/JavaScript/Reference/Statements
  • Revision title: Statements and declarations
  • Revision id: 932337
  • Created:
  • Creator: Ende93
  • Is current revision? No
  • Comment delete {{experimental_inline}} of "for...of" part in Iterations

Revision Content

{{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.
{{jsxref("Statements/if...else", "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.
{{jsxref("Statements/try...catch", "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 and classes

{{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.
{{experimental_inline}} {{jsxref("Statements/class", "class")}}
Declares a class.

Iterations

{{jsxref("Statements/do...while", "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.
{{jsxref("Statements/for", "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()}} {{jsxref("Statements/for_each...in", "for each...in")}}
Iterates a specified variable over all values of object's properties. For each distinct property, a specified statement is executed.
{{jsxref("Statements/for...in", "for...in")}}
Iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.
{{jsxref("Statements/for...of", "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 or continue statement.
{{deprecated_inline}} {{jsxref("Statements/with", "with")}}
Extends the scope chain for a statement.

Specifications

Specification Status Comment
{{SpecName('ES6', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}} {{Spec2('ES6')}} New: function*, let, for...of, yield, class
{{SpecName('ES5.1', '#sec-12', 'Statements')}} {{Spec2('ES5.1')}}  
{{SpecName('ES3', '#sec-12', 'Statements')}} {{Spec2('ES3')}}  
{{SpecName('ES1', '#sec-12', 'Statements')}} {{Spec2('ES1')}} Initial definition

See also

Revision Source

<div>{{jsSidebar("Statements")}}</div>

<p>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.</p>

<h2 id="Statements_and_declarations_by_category">Statements and declarations by category</h2>

<p>For an alphabetical listing see the sidebar on the left.</p>

<h3 id="Control_flow">Control flow</h3>

<dl>
 <dt>{{jsxref("Statements/block", "Block")}}</dt>
 <dd>A block statement is used to group zero or more statements. The block is delimited by a pair of curly brackets.</dd>
 <dt>{{jsxref("Statements/break", "break")}}</dt>
 <dd>Terminates the current loop, switch, or label statement and transfers program control to the statement following the terminated statement.</dd>
 <dt>{{jsxref("Statements/continue", "continue")}}</dt>
 <dd>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.</dd>
 <dt>{{jsxref("Statements/Empty", "Empty")}}</dt>
 <dd>An empty statement is used to provide no statement, although the JavaScript syntax would expect one.</dd>
 <dt>{{jsxref("Statements/if...else", "if...else")}}</dt>
 <dd>Executes a statement if a specified condition is true. If the condition is false, another statement can be executed.</dd>
 <dt>{{jsxref("Statements/switch", "switch")}}</dt>
 <dd>Evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case.</dd>
 <dt>{{jsxref("Statements/throw", "throw")}}</dt>
 <dd>Throws a user-defined exception.</dd>
 <dt>{{jsxref("Statements/try...catch", "try...catch")}}</dt>
 <dd>Marks a block of statements to try, and specifies a response, should an exception be thrown.</dd>
</dl>

<h3 id="Declarations">Declarations</h3>

<dl>
 <dt>{{jsxref("Statements/var", "var")}}</dt>
 <dd>Declares a variable, optionally initializing it to a value.</dd>
 <dt>{{experimental_inline}} {{jsxref("Statements/let", "let")}}</dt>
 <dd>Declares a block scope local variable, optionally initializing it to a value.</dd>
 <dt>{{experimental_inline}} {{jsxref("Statements/const", "const")}}</dt>
 <dd>Declares a read-only named constant.</dd>
</dl>

<h3 id="Functions_and_classes">Functions and classes</h3>

<dl>
 <dt>{{jsxref("Statements/function", "function")}}</dt>
 <dd>Declares a function with the specified parameters.</dd>
 <dt>{{experimental_inline}} {{jsxref("Statements/function*", "function*")}}</dt>
 <dd>Generators functions enable writing <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterators</a> more easily.</dd>
 <dt>{{jsxref("Statements/return", "return")}}</dt>
 <dd>Specifies the value to be returned by a function.</dd>
 <dt>{{experimental_inline}} {{jsxref("Statements/class", "class")}}</dt>
 <dd>Declares a class.</dd>
</dl>

<h3 id="Iterations">Iterations</h3>

<dl>
 <dt>{{jsxref("Statements/do...while", "do...while")}}</dt>
 <dd>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.</dd>
 <dt>{{jsxref("Statements/for", "for")}}</dt>
 <dd>Creates a loop that consists of three optional expressions, enclosed in parentheses and separated by semicolons, followed by a statement executed in the loop.</dd>
 <dt>{{deprecated_inline}} {{non-standard_inline()}} {{jsxref("Statements/for_each...in", "for each...in")}}</dt>
 <dd>Iterates a specified variable over all values of object's properties. For each distinct property, a specified statement is executed.</dd>
 <dt>{{jsxref("Statements/for...in", "for...in")}}</dt>
 <dd>Iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.</dd>
 <dt>{{jsxref("Statements/for...of", "for...of")}}</dt>
 <dd>Iterates over iterable objects (including <a href="https://developer.mozilla.org/en-US/docs/Core_JavaScript_1.5_Reference/Global_Objects/Array" title="Array">arrays</a>, array-like objects, <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Iterators_and_Generators" title="Iterators and generators">iterators and generators</a>), invoking a custom iteration hook with statements to be executed for the value of each distinct property.</dd>
 <dt>{{jsxref("Statements/while", "while")}}</dt>
 <dd>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.</dd>
</dl>

<h3 id="Others">Others</h3>

<dl>
 <dt>{{jsxref("Statements/debugger", "debugger")}}</dt>
 <dd>Invokes any available debugging functionality. If no debugging functionality is available, this statement has no effect.</dd>
 <dt>{{experimental_inline}} {{jsxref("Statements/export", "export")}}</dt>
 <dd>Used to export functions to make them available for imports in external modules, another scripts.</dd>
 <dt>{{experimental_inline}} {{jsxref("Statements/import", "import")}}</dt>
 <dd>Used to import functions exported from an external module, another script.</dd>
 <dt>{{jsxref("Statements/label", "label")}}</dt>
 <dd>Provides a statement with an identifier that you can refer to using a <code>break</code> or <code>continue</code> statement.</dd>
</dl>

<dl>
 <dt>{{deprecated_inline}} {{jsxref("Statements/with", "with")}}</dt>
 <dd>Extends the scope chain for a statement.</dd>
</dl>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>New: function*, let, for...of, yield, class</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td>{{SpecName('ES3', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES3')}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td>{{SpecName('ES1', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Initial definition</td>
  </tr>
 </tbody>
</table>

<h2 id="See_also">See also</h2>

<ul>
 <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators">Operators</a></li>
</ul>
Revert to this revision