function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
makeFunc함수안에 name변수와 displayName이 있고,
makeFunc함수에서 name변수를 displayName으로 리턴
name변수를 받은 displayName은 alert(name)을 정상적으로 실행할 수 있음.
맨 아래 myFunc이라는 변수에 makeFunc(name변수와 displayName함수를) 입력
맞나요 형님들?
해당 댓글은 삭제되었습니다.
아 이해했습니다 감사합니다 그래서 displayName이 더 늦게 실행되는데도 들어가는거였네여 감사함다
name은 makeFunc안에 있는거고 그걸 displayName에서 참조하는거지
1. name은 전역 스코프에서는 참조 불가능, 2. myFunc에서는 당연히 가능, 3. displayName 안에는 name이 없지만 스코프 체인에 의해서 myFunc에 있는 name에 접근이 가능함.
3. 오타 났네 makeFunc안에 있는 name에 접근 가능
displayName이라는 함수가 정의되는 순간 name을 참조하고 있기 때문에 makeFunc라는 함수가 종료되면 원래는 name 변수는 메모리 상에서 사라져야 하지만 계속해서 참조할수 있는 것임. 클로저에 대한 내용을 공부하면 좀 더 명확해질거야.
감사합니다 형님 ㅠㅠ안그래도 지금MDN에서 클로저공부하는데 순서가 헷갈려서 여쭤봤습니다 감사합니다~!!!!