몇 가지 JavaScript 함수에 문제가있어 약식 alert()가 나에게 놀랐던 것을 알릴 때까지 약 1 시간 동안 머리를 긁적 거리게했습니다. 하나의 함수는 다른 함수의 로컬 변수를 변경하고있었습니다. 하나의 함수가 다른 함수의 로컬 변수를 변경합니까?
function first() {
msg = "1111";
second();
alert(msg);
}
function second() {
msg = "2222";
}
내가 먼저 전화
은() 내가 경고 상자를 얻을 기대 "1111"말을하지만 대신에 "2222"을 얻을 : 나는 간단한 테스트 스크립트를 썼다. second()가 first()에 속하는 지역 변수에 어떤 영향을 미치나요? 나는 뭔가를 놓치고 있거나 이것이 버그인가?Firefox 12.0을 사용하고 있습니다. var 문을 사용하는 경우
함수 안에'var msg ... '가 없으면 로컬이 아닙니다. –
https://developer.mozilla.org/en/JavaScript/Guide/Values%2C_Variables%2C_and_Literals#Variable_scope (자바 스크립트를 처음 사용하는 경우 전체 가이드는 읽을만한 가치가 있습니다) –
저는 가변 범위로 인해 혼란 스러웠지만, 그리고 나서 나는 닫히고 폐쇄 범위를 사랑하는 법을 배웠습니다 (http://stackoverflow.com/questions/111102/how-do-javascript-closures-work). –