JavaScript アプリケーションは、適切な構文で書かれた文から構成されます。ひとつの文が数行に渡る場合もあります。また複数の文それぞれがセミコロンで区切られていれば 1 行となる場合もあります。そのキーワードはひとつではなく、キーワードのグループとなっています。

文と宣言(カテゴリ別)

アルファベット順リストは左サイドバーで確認できます。

制御フロー

ブロック
ブロック文は 0 個以上の文をグループ化するのに使います。ブロックは 1 組の波括弧で囲みます。
break
現在実行中のループ、switch による分岐、あるいはラベル文を終了し、その終了した文に続く文へとプログラムの制御を移行します。
continue
現在実行中のループ、またはラベル付きループで現在反復している文の実行を終了し、そのループの実行を次の反復から継続します。
空文
空文は、文が必要ないが JavaScript の文法上 1 つの文が必要な場合に使います。 
if...else
与えられた条件が真の場合はある文を実行します。条件が偽の場合はまた別の文を実行できます。
switch
ある式を評価し、式の値をケース節と照らし合わせ、ケース節に関連付けられた文を実行します。
throw
ユーザー定義の例外をスローします。
try...catch
実行を試み、例外がスローされた際に行うべき処理を規定する文のブロックを記述します。

宣言

var
変数を宣言し、その変数をある値に初期化することもできます。
let
ブロックスコープを持つ局所変数を宣言し、その変数をある値に初期化することもできます。
const
読み取り専用の名前付き定数を宣言します。

関数とクラス

function
特定の仮引数を持つ関数を宣言します。
function*
イテレータをより簡単に書けるジェネレータ関数です。
async function
指定したパラメーターの非同期関数を定義します。
return
関数によって返される値を指定します。
class
クラスを宣言します。

反復処理

do...while
テスト条件が偽と評価されるまで指定された文を実行するループを作成します。この条件は文が実行されたあとに評価され、その結果少なくとも 1 回は指定された文が実行されます。
for
丸括弧で囲まれ、セミコロンで区切られた 3 つの式と、それに続くループ内で実行される文から構成されるループを作成します。
for each...in
オブジェクトプロパティの全ての値を、指定した変数を通して反復処理を行います。それぞれ個別のプロパティに対し、指定した文が実行されます。
for...in
オブジェクトの列挙可能なプロパティに対し任意の順番で反復処理を行います。それぞれ個別のプロパティに対し、文を実行できます。
for...of
反復可能オブジェクト(配列、配列様のオブジェクト、イテレータとジェネレータを含む)を反復処理し、それぞれ個別のプロパティの値に対する実行文をともなった反復処理フックを呼び出します。
while
テスト条件が真と評価される間、指定した文を実行するループを作成します。この条件は文が実行される前に評価されます。

その他

debugger
利用可能なデバッグ機能を呼び出します。利用可能なデバッグ機能がない場合、この文は無効となります。
export
外部モジュールや別のスクリプトでインポートできるように、関数をエクスポートするのに使われます。
import
外部モジュールや別のスクリプトからエクスポートされる関数をインポートするのに使われます。
label
breakcontinue 文を使う際に参照できる識別子を含む文を用意します。
with
文のスコープチェーンを拡張します。

仕様

仕様 策定状況 コメント
ECMAScript 1st Edition (ECMA-262)
Statements の定義
標準 初期定義。
ECMAScript 3rd Edition (ECMA-262)
Statements の定義
標準  
ECMAScript 5.1 (ECMA-262)
Statements の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
ECMAScript Language: Statements and Declarations の定義
標準 新規定義 : function*, let, for...of, yield, class
ECMAScript Latest Draft (ECMA-262)
ECMAScript Language: Statements and Declarations の定義
ドラフト  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
Legacy generator function なし なし2 — 58 なし なし なし
async function55 あり52 なし4210.1
block あり あり1 あり あり あり
break あり あり1 あり あり あり
class42 あり45 なし ?10.1
const21 あり362 311 あり5.1
continue あり あり1 あり あり あり
debugger あり あり1 あり あり あり
do...while あり あり16 あり あり
Empty statement (;) あり あり1 あり あり あり
export61

16

154

60

54 — 605

なし4710.1
for あり あり1 あり あり あり
for each...in なし なし1.5 — 57 なし なし なし
for...in あり あり16 あり あり
for...of3812136 なし258
function あり あり1 あり あり あり
function*391326 なし2610
if...else あり あり1 あり あり あり
import61

16

154

60

54 — 605

なし4710.1
import.meta64 ?62 なし51 ?
label あり あり1 あり あり あり
let

49

48 — 4911 12

41 — 4910

124413 14 15111710
return あり あり1 あり あり あり
switch あり あり1 あり あり あり
throw あり あり1 あり あり あり
try...catch あり あり16 あり あり
var あり あり1 あり あり あり
while あり あり1 あり あり あり
with あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Legacy generator function なし なし なし4 — 58 なし なし なし
async function あり55 あり524210.16.0
block あり あり あり4 あり あり あり
break あり あり あり4 あり あり あり
class4242 あり45 ?10.14.0
const あり あり あり362 3 あり あり あり
continue あり あり あり4 あり あり あり
debugger あり あり あり4 あり あり あり
do...while あり あり あり4 あり あり あり
Empty statement (;) あり あり あり4 あり あり あり
export なし61 あり

60

54 — 605

4710.1 なし
for あり あり あり4 あり あり あり
for each...in なし なし なし4 — 57 なし なし なし
for...in あり あり あり4 あり あり あり
for...of5.1 あり12146258 あり
function あり あり あり4 あり あり あり
function* あり39 あり26 あり104.0
if...else あり あり あり4 あり あり あり
import なし61 あり

60

54 — 605

4710.1 なし
import.meta6464 ?6251 ? なし
label あり あり あり4 あり あり あり
let

49

41 — 4910

49

48 — 4911 12

41 — 4910

124413 14 1517104.0
return あり あり あり4 あり あり あり
switch あり あり あり4 あり あり あり
throw あり あり あり4 あり あり あり
try...catch あり あり あり4 あり あり あり
var あり あり あり4 あり あり あり
while あり あり あり4 あり あり あり
with あり あり あり4 あり あり あり

1. From version 7.0.0: this feature is behind the --harmony runtime flag.

2. Prior to Firefox 13, const is implemented, but re-assignment is not failing.

3. Prior to Firefox 46, a TypeError was thrown on redeclaration instead of a SyntaxError.

4. From version 15: this feature is behind the Experimental JavaScript Features preference.

5. From version 54 until version 60 (exclusive): this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.

6. Prior to Firefox 51, using the for...of loop construct with the const keyword threw a SyntaxError ("missing = in const declaration").

7. From version 0.12: this feature is behind the --harmony runtime flag.

8. files must have suffix .mjs, not .js

9. From version 8.5.0: this feature is behind the --experimental-modules runtime flag.

10. Strict mode is required.

11. Support outside of strict mode.

12. From version 48 until version 49 (exclusive): this feature is behind the Enable Experimental JavaScript Features preference. To change preferences in Chrome, visit chrome://flags.

13. Prior to Firefox 44, let is only available to code blocks in HTML wrapped in a <script type="application/javascript;version=1.7"> block (or higher version) and has different semantics (e.g. no temporal dead zone).

14. Prior to Firefox 46, a TypeError is thrown on redeclaration instead of a SyntaxError.

15. Firefox 54 adds support of let in workers.

関連項目

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3, ambi, myakura, x2357, teoli, yyss, ethertank, dextra, Potappo, Nanto vi, Mgjbot, Yuichirou
最終更新者: Uemmra3,