v8 のコマンド行引数のサポート


しばらく、いじっていなかった JavaScript のプロジェクトを再開しました。それにあたって、まずは単体テストに使っている Google v8 を更新しました。ずいぶん、バージョンがあがって、コマンド引数に指定可能なオプションが増えました。

最低限の互換性を保持するために Google v8 のほかに Mozilla Rhino, Mozilla tracemonkey も使ってテストをしているのですが、この三つの実装のコマンド引数の違いから、以前のプロジェクトは少し面倒なことになっていました。特に v8 がスクリプトに対してコマンド行引数を与えられないことで困っていました。

今回、v8 にデバッグ機能を与えた従兄弟にあたる d8 にこの機能があることを見つけました。v8 にはないようです。ちゃんと確認していなかったので、以前から、そうだったのかもしれません。

以下のように起動すると、大域変数の ”arguments” という配列に “A”, “B”, “C” がはいるという仕掛けです。

d8 a.js b.js c.js — A B C

まさに、これが欲しかったんですよ。