이 질문은 여기에 몇 번 올랐지만 내 생각은 약간 다릅니다. 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를 호출하면 오류가 발생합니다. 오류는 "Exception Occurred : 참조 오류 : x가 정의되지 않았습니다"입니다.
그래서 루프를 돌 때마다 배열을 업데이트하는 함수를 호출하고 있습니다. 그 배열을 'someFunc'라는 함수에서 빼낼 수 있어야합니다. 그래서 다른 함수에 전달하여 다른 작업을 수행 할 수 있어야합니다.
그런 다음 다시 끝내기까지 루프의 둘레와 주위를 다시 첫 번째 함수로 다시 피드해야합니다.
a, b, c = someFunc(a, b, c)
잘처럼 내가 파이썬에서오고
어디를 호출합니다.
그러나 JavaScript로 진행하는 방법을 알지 못합니다. 어떤 도움이라도 대단히 감사 할 것입니다. 내 질문이 완전히 명확하지 않은 경우 명확히 밝혀야합니다.
일단 vairable를 선언해야합니까? – Li357
두 번째 함수에서'x, y, z' 변수를'var'으로 선언하여 함수에 범위를 지정하지만 첫 번째 함수에서는'x, y '를 선언 할 때'var'를 생략한다는 점에 유의해야합니다 , z' - 효과적으로 글로벌 범위로 캐스팅합니다. 이는 문제와 관련이 없을 수도 있지만, 전역 네임 스페이스에서 이들을 사용할 수있는 의도가 아니라면 첫 번째 함수에서 'var'접두사를 붙이는 것이 좋습니다. –
@Andrew Li : SomeFunc에서 변경 되었기 때문에 값이 필요합니다. – davo36