일부 버튼에 이벤트 핸들러를 추가하려는 코드가 있습니다. 글로벌 변수 &을 콜백 클로저 &에 저장하지 않고 현재 값을 저장하고 싶습니다.자바 스크립트의 클로저
var globalNum="dummy";
function A()
{
$("#button").click(function()
{
$("#button").append(globalNum);
});
}
globalNum="dummyAgain";
클릭 이벤트가 발생하면 "dummy"또는 "dummyAgain"이 추가됩니다. 나는 closure 전역 변수의 참조가 저장되는 "dummyAgain"coz라고 믿는다. 나는 가치를 묶고 싶다. 전역 변수 &으로 초기화 할 수있는 A 내부의 로컬 변수를 만들 수 있다는 것을 알고 있습니다.하지만 다른 주변의 더 쿨한 방법이 있습니까?
감사
+1 답. @Felix_Kling은'bind()'를 사용하고 있지만'globalNum'을 업데이트하기 전에'A()'를 호출한다고 지적해야합니다. 이것은'A()'함수 래퍼를 제거하고 내용을 직접 실행하는 것과 동등합니다. – Andrew
감사. 하지만 적어도 로컬 데이터를 명시 적으로 생성하고 싶지는 않습니다. 그 외에는 단순히 A의 본문에 localNum = globalNum을 정의하고 콜백 함수를 닫으면 localNum을 추가 할 수 있습니다. 로컬 데이터를 만드는 데 약간의 문제가있는 것은 아닙니다. 나는 더 시원한 것을 찾고 있습니다. :) –
그런 다음 @Felix Kling의 대답을 사소한 변경으로 사용하십시오.'function A()'를'function A (globalParam)'로 변경하고 끝에}}) (globalParam);을 호출하십시오. 함수 내부의'globalParam'은 밖에있는'globalParam'과 다를 것입니다. – Andrew