黒木先生
羽生です。ご連絡ありがとうございます。
>>これは、他のtrial変数内の、on_startやstimulusなどで使用する関数内で、ということなのですね。
>> 関数内なら、どこに書かれたものでもよいのだと思っておりました。。
>すみません、この文章の意味をまだ正確に理解できていないです。
初歩的な勘違いでお恥ずかしいのですが、例えば、
var num;
のように、複数箇所で参照したい変数をグローバル変数として宣言した後、
var trial = { type: ...,
stimulus: ...,
on_start: function(){
var last_trial_data = jsPsych.data.get().last(1).values();
num = last_trial_data[0].response.hoge; }
}
のように、on_start内で、グローバル変数のnumに値を代入すれば、
その直後に、on_start内でもtrial変数内でもない外側で、
var A = function () { return num*num; };
としても、last_trial_data[0].response.hogeが代入された変数numを正しく参照できる、と思っておりました。
実際には、numへの代入は、var trialが実行された際に行われるため、いくらvar A = function()...をtrialの後に書いていても、正しい値は参照できないのですが。。
ややこしい説明になってしまい申し訳ありません、ご不明な点がございましたら、お知らせいただけますと幸いです。
>
on_start(またはon_finish)で値を代入すると便利です。
ご教授ありがとうございます。いただいたアドバイスとコードを基に、なんとかコードが書けました。
どうしてもグローバル変数を多用してしまう実験条件ですので、バグなど発生しないか、これから細かくチェックしていこうと思います。
本当にお手数をおかけしてしまい、大変申し訳ありませんでした。
羽生
2021年5月18日火曜日 10:26:31 UTC+9 黒木@九州大学: