JScriptのWScript.Echo()とJavaScriptのconsole.log()の共通化
JScriptで書いたコードがJavaScriptでも動作するように調整する。
メッセージの表示でよく使うWScript.Echo()
とconsole.log()
を共通化する。try-catch
文で実際に関数を実行して成功するかどうかで判定する。
function print(text){
try {
console.log(text);
} catch (e) {
WScript.Echo(text);
}
}
print("HI");
このようにprint()
というWrapper関数を作ってしまえば,JScriptとJavaScriptのどちらでも使える。
以下のようにif
文でconsole
オブジェクトの有無で判定すると,オブジェクトが存在しなければ,エラーが表示されてしまう。try
で実際に試してエラーを検知したほうが確実だ。
if (typeof(console)) console.log(text);
else WScript.Echo(text);
2016-08-14追記:これはif文のやりかたが悪かっただけだった。以下のようにきちんとやれば問題ない。
if (typeof(print) === "undefined"){ // for SpiderMonkey
function print(text){
if (typeof(console) !== "undefined") console.log(text );
else if (typeof(WScript) !== "undefined") WScript.Echo(text);
}
}
SpiderMonkeyではprint関数が既にあるので,if文を関数定義の前に書いて回避している。