| 14 | == どんな言語? == |
| 15 | |
| 16 | !JavaScript 言語の大まかな特徴を、ざっと列挙してみましょう。 |
| 17 | |
| 18 | * 比較的小さな実装のスクリプト言語 |
| 19 | |
| 20 | Web ブラウザの機能の一つとして実装される !JavaScript は、その為に非常に軽量に実装されています。つまり、言語自体が元々持つ機能が少ない、ということです。例えば、ローカルファイルへの入出力を行う命令などは用意されていません。 |
| 21 | |
| 22 | また、スクリプト言語なので、処理系はプログラムをステップ毎に逐次読み込みながら実行します。最近は JIT コンパイラ (内部でコンパイルを行ってから実行するタイプ) の処理系が多いので、基本的な構文チェックだけを先に通してから実行される、という動作も多くなってきていますが、基本的にはエラーが発生する前の部分までは実行される、といった動作になります。 |
| 23 | |
| 24 | * 文法は C や Java にやや似ている |
| 25 | |
| 26 | !JavaScript という名前の通り、言語の文法は Java に似ていなくもありません。が、値の型が曖昧な点や、インタプリタとして動作する点などを理由に、初期の頃は C に似た書き方の BASIC みたいな言語、といった見られ方をしていました。 |
| 27 | |
| 28 | 近年、 !JavaScript の持つ言語としての特徴が再評価され、むしろ C に似た書き方の LISP みたいな言語、といった見られ方に移りつつあるようです。 |
| 29 | |
| 30 | 文法が C や Java に似ていると言われる所以は何か。まず、処理の単位となるブロックをブレース "{" ~ "}" で括る書き方。 |
| 31 | |
| 32 | {{{ |
| 33 | function hoge() { |
| 34 | // 処理... |
| 35 | } |
| 36 | |
| 37 | if (a == b) { |
| 38 | // 処理... |
| 39 | } |
| 40 | }}} |
| 41 | |
| 42 | それから、処理の単位をセミコロン ";" で区切る書き方 (但し、行末のセミコロンは必須ではない)。 |
| 43 | |
| 44 | {{{ |
| 45 | var a = 10; var b = a + 20; |
| 46 | |
| 47 | // 行末のセミコロンは省略可 |
| 48 | var a = 10 |
| 49 | var b = a + 20 |
| 50 | }}} |
| 51 | |
| 52 | if, for, while, switch といった処理の流れを記述するおなじみの構文や、 C言語風の演算子 (==, ++, -- など)、さらには関数呼び出し時には関数名の後ろに引数をかっこで括る書き方なども、まさに C や Java そっくりの書き方です。 |
| 53 | |
| 54 | * 数値と文字列の型は曖昧 |
| 55 | |
| 56 | 多くのスクリプト言語と同様、 !JavaScript もまた、数値と文字列を自由に行き来する言語です。例えば、数値と文字列の足し算は、文字列の連結として解釈されます。 |
| 57 | |
| 58 | {{{ |
| 59 | var a = 10; |
| 60 | var b = 20; |
| 61 | |
| 62 | alert("a + b = " + (a + b)); // "a + b = 30" と表示 |
| 63 | }}} |
| 64 | |
| 65 | また、数字だけの文字列を数値演算に含めることもできます。その場合、足し算においては文字列の連結として誤解されないよう注意が必要です。 |
| 66 | |
| 67 | {{{ |
| 68 | var a = document.getElementById("input_a").value - 0; // 入力欄の文字列を取得。 |
| 69 | var b = document.getElementById("input_b").value - 0; // 0 で減算することで、変数には確実に数値として代入される。 |
| 70 | |
| 71 | document.getElementById("result").value = a + b; // 足し算した結果を別のフォーム部品に表示。 |
| 72 | }}} |
| 73 | |