この質問はここで数回現れていますが、私のところは少し異なります。私はJavaScriptを初めて使っています。これは問題を示す基本的なプログラムです。JavaScriptルーチンから返される複数の配列を取得する方法
var iterations = 0;
function someFunc(x, y, z) {
for (var i=0; i<4; i++) {
x[i] = x[i] * 2;
y[i] = y[i] * 2;
z[i] = z[i] * 2;
}
iterations++;
if (iterations >= 10)
return {done:true, x, y, z};
else
return {done:false, x, y, z};
}
function main() {
var x = [0, 0, 0, 0];
var y = [1, 1, 1, 1];
var z = [2, 2, 2, 2];
done = false;
while (!done) {
let {done, x, y, z} = someFunc(x, y, z);
console.log(x, y, z);
// Do some other stuff with x,y,z here,
// like calling anotherFunc(x, y, z)
}
}
main();
someFuncを呼び出すとエラーが発生します。エラーは「例外が発生しました:参照エラー:xが定義されていません」です。
私がやっていることは、ループのたびにいくつかの配列を更新する関数を呼び出すことです。これらの配列を 'someFunc'という関数から取り出すことができるようにする必要があります。そうすれば、それらを別の関数に渡して他の作業を行うことができます。
私はそれらを再び最初の機能に戻す必要があります...終了するまでループの回りを回ります。
私は
a, b, c = someFunc(a, b, c)
のように呼び出すのPythonから来ているが細かいです。
しかし、私はJavaScriptをどのように進めるのか分かりません。どんな助けでも大歓迎です。私の質問が完全にはっきりしていないかどうかを明らかにしてください。
たらvairableを宣言する必要がありますか? – Li357
注目すべき点の1つは、2番目の関数で 'x、y、z'変数を' var'で宣言することで関数に適用しますが、最初の関数では 'x、y 、z'を効果的にグローバルスコープにキャストします。これはあなたの問題には関係しないかもしれませんが、グローバル名前空間でこれらが利用できるようにするつもりでない限り、最初の関数に 'var'をつけることをお勧めします。 –
@Andrew Li:SomeFuncで変更されているため、値が必要です。 – davo36