English help on website



jsmode文(Ver9.35対応版)
目次JavaScript対応− jsmode文
jsmode文は、スクリプトエンジンの指定と、グローバル記述の指定をします。(V9.19以降)
js{}の外側で普通のマクロ文として実行します。
jsmode "JScript", 1;
パラメータ1(文字列型または数値型、省略可能)
文字列でスクリプトエンジンを指定します。
数値だけを指定した場合、パラメータ2相当のグローバルの指定だけを切り替えます。
省略した場合は"JScript"と同じです。

パラメータ2(数値型、省略可能)
1を指定すると、hidemaruGlobalオブジェクトのメソッド等をグローバルに展開し、オブジェクト名を書かなくても使えるようになります。
0の場合は展開せず、hidemaruオブジェクトとhidemaruGlobalオブジェクトがあるだけです。
省略した場合は1と同じです。

結果コード
成功時は、resultは0以外になります。
失敗時は、resultは0になります。


jsmodeで指定する文字列は、名前ごとの固有の実体であることも表していて、別のオブジェクトや変数を持ちます。
スクリプトエンジンの判断は、\までで判定しています。
例えば、"JScript"と"WebView2"は、別の実体になります。
例えば、"JScript\\myspace"と"JScript\\orespace"は、スクリプトエンジンの判断は"JScript"までで、\以降までを含めた文字列全体は別になり、実体も別になります。
同じ名前でもグローバル展開の有無の違いによっても別の実体になります。
jsmode "JScript\\myspace";
js{
  its = "mine";
}

jsmode "JScript\\orespace";
js{
  its = "oreno";
}

jsmode "JScript\\myspace";
js{
  message(its); //"mine"
}
スクリプトエンジンを省略した場合はJScriptと同じで、\から書くことで名前だけを指定できます。
jsmode "\\myspace";
js{
  //"JScript\\myspace"と同じ
}

jsmode "JScript\\myspace";
js{
  //"\\myspace"と同じ
}
名前をcurrentmacrofilenameにすることで、他のマクロと被りにくいようにできます。
jsmode "\\" + currentmacrofilename;
js{
  //他と被らない
}
同じ名前でもJscriptとWebView2は別々です。
jsmode "JScript\\myspace";
js{
  //"WebView2\\myspace"とは違う
}

jsmode "WebView2\\myspace";
js{
  //"JScript\\myspace"とは違う
}

jsmode "";とすると、スクリプトエンジンの指定は既定のJScriptに戻り、次に実行するjs{}またはexecjsはリセットされた状態で実行されます。
jsmode "allreset";とすると、現在の秀丸エディタ上に残っている他の実行空間・名前空間を全てリセットします。
jsmode "";
js{
  message(typeof(newvar));
  newvar = "hoge";
}
参照:
hidemaru.getJsMode