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

  • 完全なるグローバル変数

    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);