JavaScript関連で質問No.11753
h-tom さん 24/07/23 23:10
 
h-tom です。

1)execjs文の説明で、
  > スクリプトエンジンが同じであれば、
  とありますが、オブジェクトなので正確には「グローバル展開の状態」も関係する
んですよね?

  newfile;
  debuginfo 2;
  jsmode "JScript", 1;
  execjs "c:\\folder\\extend.js";
  js{
    hidemaruGlobal.message( extendedObj.hello() );
  }
  //「グローバル展開の状態」を切替。
  jsmode "JScript", 0;
  js{
    //execjsを実行したときと別空間なのでオブジェクトがないとエラーになる。
    hidemaruGlobal.message( extendedObj.hello() );
  }
  endmacro;

2)jsmodeの名前空間の指定について
  使えない文字とか長さの制限はあるのでしょうか?

[ ]
RE:11753 JavaScript関連で質問No.11754
秀丸担当 さん 24/07/24 11:29
 
五指
exejs文でもjsmodeによる指定と同様に、グローバル展開の状態も影響しています。
スクリプトエンジンという表現は正確ではありませんでした。
そのあたりの表現直しておきます。

jsmodeの名前空間で使える文字は、まずresetとallresetは予約語になります。
長さは、260文字までとかいう制約は無いです。
使える文字はファイル名として使える文字(\や:も含む)ということにしようと思い
ます。

[ ]
RE:11754 JavaScript関連で質問No.11756
こみやんま さん 24/07/29 11:19
 
>exejs文でもjsmodeによる指定と同様に、グローバル展開の状態も影響しています。
>スクリプトエンジンという表現は正確ではありませんでした。
>そのあたりの表現直しておきます。

jsmode や getJsMode の返り値付近の解説ですが、

秀丸の中で「用語」を固定させて記載しておき、
その用語を使った解説に統一した方が良いかと思います。

どうしても「スクリプトエンジン」「名前空間」「スコープを表す独自の識別子」み
たいにブレており、
それぞれ指しているものが「どこまで」「どの箇所」を指してるの? というのが曖
昧になっています。
(ヘルプを書いてる その時の気分で変わってるんじゃないかと思うくらいですw)


例として以下みたいに

```
jsmode "スクリプトエンジン名\タグ名", 大域値
```

```
jsmodeの完全名前空間識別子 = "スクリプトエンジン名\タグ名\<大域名>"
```

hidemaru.getJsMode() はこの「jsmodeの完全名前空間識別子」が得られる


```
jsmodeのユーザー指定空間 = "スクリプトエンジン名\タグ名"
```

とする。


jsmodeは、

```
jsmode jsmodeのユーザー指定空間, 大域値
```

ではあるが、2番目の大域値の指定は通常不要であるため、、

```
jsmode jsmodeのユーザー指定空間
```

となる。


```
jsmode "スクリプトエンジン名\タグ名"
```

■スクリプトエンジン名
スクリプトエンジン名は、
@JScript
AChakra
BWebView2
の3つがあり、Aは限定的なWindowsのバージョンしか利用できず、Windows11以降で
も通常利用できないため、
一般的には@もしくはBで運用される。
◆スクリプトエンジン名の省略
@jsmode 自体が指定されていない時 - JScriptが指定されたものとみなす。
A"スクリプトエンジン名\タグ名" が "\MyLabel" など \から始まる形で指定された
場合は、JScriptが指定されたとみなす。

■タグ名
タグ名はユーザーが任意に付けられる識別子。固有の(他のマクロと被らない)タグ
名の指定することを強く推奨する。
特に非同期の機能(setTimeout/setInterval/fetch等々)を利用している場合は、タグ
名の指定は必須と考えてよい。
◆タグ名の省略
jsmode自体が省略された場合も、「スクリプトエンジン名」だけが指定された場合も、
どちらもタグ名が省略されているものとみなす。
「タグ名」が省略されている場合にはタグ名には自動的に
・ファイルを開いているならばその「フルパス名」
・ファイルを開いていない(=無題)ならば、「カレントフォルダ名」
が割り当てられる。



みたいな感じで、解説と「どこを指してるのか?」と用語が安定してくるかと思いま
す。


[ ]
RE:11756 JavaScript関連で質問No.11757
秀丸担当 さん 24/07/29 12:57
 
確かにわかりづらいかもしれないです。
しいて言うとすれば、名前空間というより、実体(インスタンス)だと思います。
名前空間というのは、至る所に名前空間と書いたほうがいいということで書いてしま
いました。
スクリプトエンジンやグローバル展開の状態も含めた、固有の名前がある実体です。
用語とするのはわからないですが、ご意見参考にさせていただきます。

[ ]