메소드의 객체를 반환하는 간단한 모듈 패턴 함수를 만들었습니다.이 경우에는 a를 추가하는 하나의 메소드가 a 고유 ID가있는 div를 만든 다음 특정 섹션 요소에 추가합니다. id는 cardId라는 함수의 private 변수에서 만들어집니다. 변수가 각 함수 호출과 함께 1로 다시 설정되는 것을 이해하지 못하고 대신 함수에서 반환 된 모든 div에 cardId라는 다른 변수와 연관된 변수가 있음을 의미하는 고유 한 ID가 있습니다. 누군가가 이것에 대해 밝히거나 뭔가 저를 가리킬 수 있습니까?이 변수는 각 함수 호출과 정확히 어떻게 재설정되지 않습니까?
let cardTools= function(){
let cardId=1;
return {
addCard: function(){
let card=document.createElement("div");
let sec=document.getElementsByClassName("memory-cards")[0];//gets a section
card.classList.add("card");
card.id="i";
card.id+=cardId;
cardId+=1;
sec.appendChild(card);
return card;
}
}
}
let tools= cardTools();
let card=tools.addCard(); //id==i1
let card2=tools.addCard(); //id==i2
let card3=tools.addCard(); //id==i3
당신은 그것이 작동한다고 말하고있는 것이지만 어떻게 이해할 수 있습니까? – Prisoner
음'cardId'는'addCard' 함수 밖에 있습니다. 클로저 ('cardTools' 함수에 의해 만들어 짐)에 함정에 빠졌지 만'addCard' 안에 선언되지 않았기 때문에 호출 할 때마다 다시 선언되지 않습니다. –
간단한 확인. 'cardTools'를 몇 번이나 부릅니까? 일단. 그래서, 'cardId = 1'이 몇 번 실행되어야하는지 ... –