タイトル | : スクリプトモジュール間での挙動の違いについて |
投稿日 | : 2024/07/02(Tue) 21:13 |
投稿者 | : tm |
いくつかPPx.StayModeの挙動の違いがあるので報告します。
1. qjsではPPx.StayMode以降に書かれたPPx.linemessage()が
実行されない
//!*script
PPx.linemessage(1);
PPx.Echo(2);
PPx.StayMode = 2;
PPx.linemessage(3);
PPx.Echo(4);
実行結果:
(wsh,cv8)
linemessage "1"
Echo "2"
linemessage "3"
Echo "4"
(qjs)
linemessage "1"
Echo "2"
Echo "4"
2. qjsでは初回実行時にppx_resume()を実行したときにマクロの
結果を得られない
//!*script
PPx.StayMode = 2;
function ppx_resume() {
PPx.Echo(PPx.Extract('%n'));
}
ppx_resume();
実行結果:
(wsh,cv8)
初回: Echo "<ppcid>"
二回目以降: Echo "<ppcid>"
(qjs)
初回: Echo ""
二回目以降: Echo "<ppcid>"
3. qjsでは*script :<関数式>,<scriptname>を実行したときに
エラーがでる
//!*script
PPx.StayMode = 2;
var a = function() { PPx.StayMode = 0; }
var b = function b() { PPx.StayMode = 0; }
function c() { PPx.StayMode = 0; }
wsh,cv8では関数式、関数宣言のどちらでも動作します。
qjsはcのみエラーがでません。a,bはエラーがでますが、
実行自体はされているような気がします。
あともう一点、PPx.report()の結果に差異があります。
//!*script
PPx.report(1,2); a
PPx.report([1,2]); b
(wsh)
a: エラー
b: 1,2
(qjs)
a: 1,2
b: 1,2
(cv8)
a: エラー
b: Microsoft.ClearScript.V8.V8ScriptItem+V8Array