2011-06-14 6 views
1

일부 스크립트 오류를 ​​정리하고 정교한 딜레마가 있습니다.Javascript - 인수가있는 함수를 인수로 전달하십시오.

Session.Timer = window.setTimeout("TimeoutHandler(Session)", 1000); 

타임 아웃이 실행하려고 할 때 때문에이 작동하지 않습니다 TimeoutHandler(Session)는 세션 변수 (범위를 벗어난)이 무엇인지 알 수 없습니다 :

는 코드 줄을 고려하십시오.

문자열 또는 그래서 제대로 실행됩니다 번호로 번역 Session "값"을 얻을 수있는 방법이 있나요?

답변

6

문자열 대신 익명의 함수를 사용하여 클로저를 사용하면 Session에 대한 참조가 유지됩니다. 당신이 폐쇄 익숙하지 않다면

Session.Timer = window.setTimeout(function() { TimeoutHandler(Session); }, 1000); 

는 여기 brief introduction입니다.

+0

+1하지만 * 폐쇄 ** 또는 ** 익명 함수 *는 동일한 것으로 들리므로 소리가납니다. – alex

+0

@alex 내가 좋아하는 문구를 찾을 수는 없지만 기본적으로 익명 함수와 클로저는 밀접하게 관련되어 있습니다. – cobbal

+0

내가 문서를 빨리 ​​읽을 때 너무 분명해졌습니다 :) 나는 그들이 심지어 범위의 로컬 변수를 유지했다는 것을 몰랐습니다. 나는 새로운 것을 배웠다! 처음부터 염두에 두었던 첫 번째 솔루션을 구현할 수도 있습니다. D –

관련 문제