JavaScriptの文法



リテラル

 リテラルとは簡単に言えば具体的な値(数値)です。JavaScriptではJavaと違って型の宣言というのがありません。その代り、変数にリテラルを代入するとその変数は、そのリテラルの型になります。リテラルには次のようなものがあります。

 特殊な値として、以下のものが定義されています。


変数と定数

 変数は値を入れる入れ物です。変数を宣言するには var が必要です。値を代入する場合は、var は必要ありません。

 JavaScriptではJavaのような変数の型がありません。ただ、それは表面上内だけで内部的には型があります。型は代入したリテラルや他の変数の型が引き継がれます。

var x, y;
a = 5;

 定数は値の変更はできません。定数はconstを使って定義します。(Firefoxのみで使用可能)

const pi = 3.1415926;

配列、連想配列、構造体

 JavaScriptには、スカラー(普通の変数)の他に、配列やオブジェクトがあります。配列は、Arrayクラスのインスタンスです。連想配列はオブジェクト(Object)の一種として定義します。構造体もオブジェクトの一種です。

 空の配列は、new Array() で作れますが、[]を変数に代入しても作れます。空の連想配列または構造体は、new Object() で作れますが、{}を変数に代入しても作れます。

 長さのみ指定し中身が未定義の配列は、new Array(length) により作ります。配列の内容を初期化するには、new Array(var1, var2, ...) を使用します。あるいは、[var1, var2, ... ]でも初期化できます。

配列の例
var arr = new Array();    // 空の配列
var arr = [];    // 空の配列
var arr = new Array(10);  // 長さ10の配列
var arr = new Array(1, 2, 3);  // 内容が1,2,3の配列
var arr = [1, 2, 3];  // 内容が1,2,3の配列

連想配列の例
var hash = new Object();  // 空の連想配列
var hash = {X:5, Y:10};   // 初期化された連想配列。

サンプル


予約語

 JavaScriptはJavaの文法に似せて設計されているので、予約語も共通なのが多いです。予約語はまさに予約された語なので、変数として使おうとすると別の意味に解釈されてしまい、文法エラーになってしまいます。また、予約語一覧を見ると、JavaScriptで何かできるかが想像できます。

予約語一覧

次の一覧は将来の使用を見越した予約語だそうで、実際には予約語として機能しないものの、変数として使うとエラーになるはずです。

次の一覧は「厳格モードのコード」として実行されたとき、将来のキーワードとして予約されているそうです。ただし、letとyieldはFirefoxでは特有の実装がされています。

 

演算子

 演算子はJavaなどとだいたい同じですが、少し毛色の違うものもあります。
 (ヒント) 種別をクリックするとサンプルページを開きます。

JavaScriptの演算子
種別演算子備考
算術演算子+, -, *, /, %, 単項演算子の-,
+=, -=, *=, /=, %=, ++, --
文字列演算子+, +=
シフト演算子<<, >>>, >>, <<=;, >>>=, >>=;>>>は0埋め右シフトを行う。
ビット演算子&, |, ^, ~, &=, |=, ^=
関係演算子==, ===, < > <=, >====は型を含めて等価かどうか比較する。
論理演算子&&, ||, !
メンバー演算子., [][]はブラケット記法。連想配列の要素としてメンバーを扱う。
三項演算子?:(例) x == 0 ? true : false;
カンマ演算子,(例) for (x=0, y=4; x < 3; x++, y--) { .. }
delete演算子deleteオブジェクトの特定の要素や配列の要素を削除する。(例) delete a[i];
function演算子関数やオブジェクトを定義するのに使用する。
プロパティ演算子get, setオブジェクトのプロパティを定義するとき使用する。(エラーになるようです)
in演算子inオブジェクトにプロパティが存在するかを判別する。(ハッシュのキーが存在するかと同じ)
let演算子let特定のブロック内のみで有効な変数を定義する。 (現在のブラウザではエラーになる)
new演算子newインスタンスを生成する。
this演算子this現在のオブジェクトを参照する。
typeof演算子typeofデータ型を返す。
void演算子voidaタグのhrefとonclick属性のようにhrefを無効にしたい場合などに使う。
yield演算子yieldジェネレータ関数を実現するのに使う。ジェネレータ関数の中ではyieldが現れると呼び出されるごとにそこで停止する。(現在のところ、動作しない)

 

制御構文

if文

 文法は他のC言語系統の言語と同じです。

if (比較式) {
 文; ..
}
if (比較式) {
 文; ..
}
else {
 文; ..
}
if (比較式) {
 文; ..
}
else if (比較式) {
  文; ..
}
else if (比較式) {
  文; ..
}
else {
 文; ..
}

switch文

 switch文は複数の選択肢から項目を選び、その項目に対するコードを実行する文です。

switch (比較式) {
  case 項目1:
    文; .. 文;
    break;
  case 項目2:
    文; .. 文;
    break;
  case 項目2:
    文; .. 文;
    break;
  default:  // default句は省略可能。
    文; .. 文;
}

while, do-while文

 while, do-whileは繰り返しブロックを作ります。繰り返す前に繰り返し終了を判断するか、後で判断するかが両者の違いです。

while (比較式) {
  文; .. 文;
}

do {
  文; .. 文;
} while (比較式);

for文

 for文はJavaのfor文と同じく、繰り返し制御変数の初期化、終了判断、制御変数の増加(あるいは減少)を制御して繰り返しを実現します。

for (初期化, 終了判断, 制御変数の増加) {
  文; .. 文;
}

for in文

 指定された変数をコレクションの全要素のインデクスやキーを繰り返します。Java5で追加された新型for文と動作が違うので注意。

for (変数 in コレクション) {
  文; .. 文;
}

for each文

 for each文は指定された変数をすべてのコレクションの要素の値に対して繰り返します。

 (注意) 使用できないブラウザが多いので、for in を使ったほうがよいです。

for each (変数 in コレクション) {
  文; .. 文;
}

break文

 break文は主に繰り返しブロックからの脱出に使います。また、switch文の中でも使用されます。

break;

continue文

 continue文は、繰り返しブロック内で、残りの処理をスキップし、次の繰り返しに移行します。

continue;

return文

 return文は関数から呼び出し元に戻るのに使用します。その際、戻り値を指定できます。

return 戻り値;

構造化例外

 try catch finally文は、構造化例外処理を実現します。

try {
  文; .. 文;
}
catch (e) {
  文; .. 文;
}
try {
  文; .. 文;
}
catch (e 文) {
  文; .. 文;
}
catch (e 文) {
  文; .. 文;
}
 ...

catch (e) {
  文; .. 文;
}
try {
  文; .. 文;
}
catch (e 文) {
  文; .. 文;
}
catch (e 文) {
  文; .. 文;
}
 ...

catch (e) {
  文; .. 文;
}
finally {
  文; .. 文;
}

throw文

 throw文は例外を発生させます。

throw オブジェクト;

with文

 VBにあるようなWith文と同じように、ソースでオブジェクトの参照を省略できます。

 (注意) with文の使用は非推奨であり、ECMAScript 5 の strict mode では禁止されています。

with (オブジェクト) {
  文; .. 文;
}

var文

 var文は変数を宣言するのに使用します。JavaScriptでは変数の宣言は必須ではないですが、関数の外側でvarで宣言した変数はstaticな変数となります。

var 変数;
var 変数, 変数、...;
var 変数 = 値;

 

 

このページの先頭へ戻る