텍스트 어드벤처 게임 내에서 변수를 수정하는 데 문제가 있습니다. JavaScript 용 코드를 작성하고 있습니다. 함수 내의 함수를 사용하여 전역 변수의 값을 변경하려고합니다 (닫히지 않고 닫음). 게임이 작동하는 방법JavaScript - 함수가 전역 변수를 수정하지 않습니다.
/*This is just example code.*/
var health = 100;
var exp = 0;
function refreshStats() {
health -= 10;
exp += 1;
}
function foo(flag) {
if (flag == DONOTHING) {
refreshStats();
}
if (health <= 0) {
say("You died, bwahaha.");
}
if ((exp/10) == Math.floor(exp/10)) {
health += 10;
say("You leveled up!");
}
}
은 (게임 내 행동이나 영역으로 정의) 각 기능은 사용자가 각각 클릭하거나에서 쓸 수 있도록 자바 스크립트에 의해 배치 단추 및 양식에 의해 호출 될 것입니다. refresh()를 사용하여 health와 exp 변수를 업데이트해야 foo()가 올바르게 사용할 수 있습니다. 이 함수는 foo()가 실행될 때까지 변수를 업데이트하지 않는 것처럼 보입니다. 브라우저 호환성 문제인지 궁금해합니다. 브라우저 호환성 문제는 실제로 저를 싫어할 지 모르지만, 나는 그렇지 않길 바랄뿐입니다.
제안 사항?
추측. "글로벌"변수는 실제로 전역 범위에서 정의되지 않으므로 다른 코드가 변수의 유효 범위가 다른 복사본을 수정합니다. 그러나 실제 코드와 그 주변의 컨텍스트를 보지 않고서는 이것을 알 수 없습니다. – jfriend00
DONOTHING은 (는) 변수입니까, 아니면 "DONOTHING"이라는 문자열입니까? – Paulpro
DONOTHING은 플래그와 같은 변수이지만 예제 코드에서는 정의하지 않았습니다. 이러한 상황에서는 작동하지 않을 것이라는 것을 알고 있지만 플래그가 아닌 전역 변수에 더 관심이 있습니다 (실제 코드의 플래그가 제대로 정의되어 있음). – zeroslash