最終更新日 2024-09-25

グローバル変数は永続変数のように扱える

完全なるグローバル変数

hmEdgeJSでは、「完全なるグローバル変数」はマクロを実行し終えた後もクリアされません。
「同じプロセス(=同じ秀丸タブ)の秀丸であれば」変数の値が継続して残ります。

グローバル変数の挙動

秀丸マクロ側のソース

mytest.mac
#NODE = loaddll( hidemarudir + @"\hmEdgeJS" );

#r = dllfuncw( #NODE, "DoFile", currentmacrodirectory + @"\mytest.js" );

freedll(#NODE);

js側のソース

mytest.js
// このmycounterを定義したことがなかったら、ここで完全なるグローバル変数として初期化
if (typeof(mycounter) == "undefined") {
    mycounter = 0;
}

mycounter++;
console.log(mycounter);