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 705791 of Statements and declarations

  • Revision slug: Web/JavaScript/Reference/Statements
  • Revision title: Statements and declarations
  • Revision id: 705791
  • Created:
  • Creator: arai
  • Is current revision? No
  • Comment Move yield and yield* to expressions

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.
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 or continue 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

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>
  <a href="/en-US/docs/Web/JavaScript/Reference/Statements/if...else"><code>if...else</code></a></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>
  <a href="/en-US/docs/Web/JavaScript/Reference/Statements/try...catch"><code>try...catch</code></a></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">Functions</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>
</dl>
<h3 id="Iterations">Iterations</h3>
<dl>
 <dt>
  <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/do...while">do...while</a></code></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>
  <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for"><code>for</code></a></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()}} <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for_each...in"><code>for each...in</code></a></dt>
 <dd>
  Iterates a specified variable over all values of object's properties. For each distinct property, a specified statement is executed.</dd>
 <dt>
  <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in"><code>for...in</code></a></dt>
 <dd>
  Iterates over the enumerable properties of an object, in arbitrary order. For each distinct property, statements can be executed.</dd>
 <dt>
  {{experimental_inline()}} <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a></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>ECMAScript 1st Edition.</td>
   <td>Standard</td>
   <td>Initial definition.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td>&nbsp;</td>
  </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</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