2009/06/25

Javascriptのシェル

Javascriptのシェル
Javascriptのシェル
有名な小飼弾氏のブログ404 Blog Not Foundのエントリ私がJavaScriptを初心者用の言語として選んだわけにJavascriptのシェルが載っていました。
試しに自分でも作ってみたところ、これが意外とおもしろいものでした。これまで、エディタを立ち上げて、コマンドプロンプトを立ち上げて、とやっていたものがブラウザだけで簡単に実行できるようになります。できたプログラムを保存するためにはエディタを使う必要がありますが、簡単なコード片を実行するのには便利です。
ところが、スクリプトが長くなると文法エラーを見つけるのが面倒です。そこで、以前作ったJavascriptのパーサーを組み込んで実行前に文法エラーをチェックするようにしてみました。
正確にはECMA Scriptのパーサーになります。Internet ExplorerやFirefox上のJavascriptに比べると融通が利かないようです。
2008/03/02 追加
ECMA Script syntax checkのチェックをはずすと文法チェックを行なわないようになります。
あまりテストができていないので、怪しいところがるかもしれません。
使い方

* Javascriptシェル ← ここから実行してください。

上半分のテキストエリアにJavascriptのソースコードを入力してexecuteボタンを押してください。
下半分が出力領域となっています。出力には println() 関数を使ってください。clear outputボタンで出力領域の内容を消去します。

println("hello, world.");

Window Script Hostのサンプルを実行できるようにWScript.Echoをprintlnに置換してから実行します。
2008/03/08 追加
set line noボタンとdelete line noボタンをつけました。文法エラー表示時の行を探し易くなりました。また、行番号を表示したまま実行することができます。行番号が表示されているときにset line noボタンをクリックすると行番号を再設定します。
2008/03/20 追加
time()関数を追加しました。引数なしのクロージャを渡すと実行してミリ秒単位で実行時間を表示します。使い方は次の通りです。

var count = 10000;

println("文字列の連結(+=)");
time(function () {
var s = "";
for (var i = 0; i < count; i++) {
s += "abcdefghijklmnopqrstuvwxyz";
}
});

println("文字列の連結(join())");
time(function () {
var r = [];
for (var i = 0; i < count; i++) {
r.push("abcdefghijklmnopqrstuvwxyz");
}
var s = r.join("");
});

HTMLアプリケーション
このページ下部に、拡張子を.htaにしている(内容はhtmlと同じ)のリンクを貼っています。拡張子を.htaにするとHTMLアプリケーションとなり、Windowsではローカルで実行できます。HTMLアプリケーションはローカルアプリとして実行されますので、ActiveXオブジェクトなどが制限なく使うことができます。Scriptiong.FileSystemObjectなどもそのまま利用できます。
2008/03/08 追記
WScriptオブジェクトは使えないようです。例えば、WScript.Argumentsなどは使えないようです。
js_shell.hta
[HOME] [INDEX] Javascriptプログラミング