메뉴 건너뛰기

관리자32019.08.25 14:21

이상하게 이 질문에 답을 올리면 잘 올라가지 않는데 원인을 아직 잡지 못했습니다. 그래서 궁여지책으로 아래와 같이 답을 드립니다.

 

-----------------------------------

변수의 종류에 대해 정확한 공부가 안되어 있어서 지금 어려워 하는 겁니다.(책 268페이지 참고)

1.함수안에 선언한 변수를 지역 변수라고하고, 이 변수는 함수 밖에서 액세스할수 없어요.
우선 질문자의 첫 번째 세 줄과 같이한 것이 바로 commenDiv 변수를 지역 변수 로 선언합니다.

지역 변수는 함수가 끝나면 사라집니다. 그러니까 init()이 불러질 때 생겻다가 init() 끝남과 동시에 사라집니다.

2. 함수 바깥에 선언된 변수가 전역 변수이니다. 질문자의 두 번째 소스 코드와  같이 하면 전역 변수 commentDIv를 선언합니다.

전역변수는 한 번 만들어지면 어디서든 사용되고 브라우저가 닫힐 때까지 없어지지 않아요.
다만 앞의 코드는  init()이 불려지기 전에 그러니까 HTML 페이지가 로딩되고 있는 상태에서
이 코드(var commentDiv = document.getElementById("commentDiv"); )를 만날 때 바로 실행되고 전역변수가 생깁니다.
문제는 여기에 있습니다. 이 라인이 실행되는 시점에서 document 객체가 완성되어 있지 않고, id=commentDiv 인 태그가 처리되지 않은 상태라면
이문장에서(document.getElementById("commentDiv"); ) 오류가 납니다.
그러니까 이 문장(document.getElementById("commentDiv"); )은 HTML 문서가 완전히 로딩된 후에 실행되어야 합니다.
그래서 저의 정답은 질문자의 마지가 소스 방법과 같이 하지요

글로 쓰니 매우 표현이 어렵군요,
 

파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
위로