English help on website



グローバルの記述(Ver9.34対応版)
目次JavaScript対応− グローバルの記述
通常はHidemaruGlobalのメソッドがグローバルに展開されていて、ほとんどのマクロの文、マクロのキーワード、マクロの関数を、だいたいそのままで表記できるようになっています。(一部例外はあります)
文でもキーワードでも関数でも、全て関数の書き方(メソッドの書き方)になります。詳細
js{
 message( "Hello jsmode global" );
 insert( filename2() );
 moveto( 10, 20 );
 message( question( "y/n?" ) );
}
衝突を避ける書き方
hidemaruGlobalオブジェクトには、グローバルに展開されるものと同じ関数があります。
グローバルに関数が展開されていると、誤って上書きしてしまう可能性がありますが、衝突を避けるためにhidemaruGlobalオブジェクトを使うことができます。

js{
  moveto( x()+1, y() );  //OK
}

js{
  moveto=123;  //movetoを上書きしてしまう
  moveto( x()+1, y() );  //movetoが働かなくなってしまう
}

js{
  moveto=123;  //movetoを上書きしてしまう
  hidemaruGlobal.moveto( x()+1, y() );  //回避
}

jsmode 0;//グローバル展開しなければ、普通に使ってOKです
js{
  x=123;
  y=456;
  moveto="abc";
}

変数名に使われやすいx, y, column, lineno, str, filename, resultだけは、書き換えようとするとエラーとなるようにしてあります。
他のものも将来エラーとなるかもしれないので、グローバル展開されているものはできるだけ上書きしないようにしてください。

他に展開されているメソッド
HidemaruオブジェクトのsetVar, getVarなどもグローバルに展開されていて、省略してそのまま使えます。
evalは紛らわしい書き方を避けるため、evalMacroの展開と、evalJsがグローバルに作られます。

js{
  setVar("$a","abc");         //hidemaru.setVarと同じ
  a=getVar("$a");             //hidemaru.getVarと同じ
  evalMacro('message "a";');  //hidemaru.evalMacroと同じ
  evalJs('var a=123;');       //JavaScriptのevalと同じ
}