== ECMAscriptの特徴と学習上の注意 == Cを学習済みの人のために、Cとの違いに注目しながら ECMAscriptの概要と注意を述べます。 === インタプリタ === Cはコンパイラでした。 ECMAscriptはインタプリタです。 速度の点では コンパイラの方が速く、インタプリタは遅いと習ったかもしれません。 確かにそのとおりですが、どの程度の差があるのか 考えたり、実際に測定したことがありますか? どれだけの速度が要求されるのかは 利用する場面によって異なります。 インタプリタを利用する上で一番気をつけなければならないのは コンパイラの場合とは デバッグの方法が異なることです。 動作のしかたがコンパイラとインタプリタでまったく違います。 コンパイラと同じに考えていると、 プログラムの誤りが発見できないかもしれません。 === オブジェクト指向 === ECMAscriptはオブジェクト指向言語です。 ところが、クラスはありません。 オブジェクトはあります。 Javaなどを学習した人にとっては、ちょっと変に感じるかもしれません。 === いつ、どこで実行されるのか === Cのように端末内で実行されるものは分かり易い。 ブラウザ上で実行される場合を考えると、 いつ動作するのでしょうか? === 入力はどこから === ブラウザ上で実行される場合は どこかのオブジェクトからデータを得ることが多い。 === 出力はどこへ === ブラウザ上で実行される場合は どこかのオブジェクトの属性を修正したり、 オブジェクトを作成したりすることになります。 ---- == rhinoについて == rhinoはJavaで記述されたECMAscript処理系です。 しばらくの間はrhinoを用いてECMAscriptの基本的な部分を学習します。 会話型で使うことができます。 {{{ $ rhino Rhino 1.7 release 3 2012 02 16 js> }}} === rhinoの命令 === rhino独自の命令には次の3つがあります。 ==== quit() ==== rhinoを終了します。 {{{ quit(); }}} ==== print() ==== 引数の値を表示します。 {{{ print(3); print(kotae); print('x=', x); }}} ==== load() ==== 指定されたファイルからプログラムを読み込みます。 {{{ load('pro1.js'); }}} === rhinoへの入力 === 上の3つの命令の他に、 計算式や、 スクリプト(プログラム)を入力することができます。 1つの文が入力されると、それを評価し結果を表示します。 {{{ js> 1 + 2; 3 js> a = 2 + 3 * 4; 14 js> print(a); 14 js> }}} 代入文、if文、for文、while文なども使えます。 書き方はCとほとんど同じです。 {{{ js> for(i = 0; i < 5; i++) > print(i); 0 1 2 3 4 js> }}}