MelRanG
729
2020-03-11 17:00:59
4
330

자바스크립트 전역변수관련 질문입니다



document.querySelectorAll(".ajaxButton")[0].addEventListener('click',
		typeChange);
document.querySelector(".deleteButton").addEventListener('click', typeChange);
content = document.querySelector(".content");
var httpRequest;

function typeChange() {
	httpRequest = new XMLHttpRequest();
	var id = content.dataset.id;
	var type = content.dataset.type;
	
	if (!httpRequest) {
		alert('XMLHTTP error')
		return false;
	}
	alert("id + type2" + id + type);
	httpRequest.onreadystatechange = alertContents;
	httpRequest.open('GET', 'TodoTypeServlet?id=' + id + "&type=" + type);
	httpRequest.send();
}

3번줄 content를 저렇게 설정하면 실행되고

content앞에 var를 추가하면 typechange함수에서 content가 undifined가 뜹니다 무슨차이인가요??

content를 변수선언조자 하지 않았는데 왜 대입이 되는건가요?

0
  • 답변 4

  • nullpointerTlqkf
    2020-03-11 17:03:24

    호이스팅 문제 아닌가요?

  • 10k
    2020-03-11 17:05:17

    자바스크립트는 타입(형식)을 지정하지 않으면 알아서 자동으로 지정해줍니다. 

    그런데 이건 나쁜 습관이라서요

    꼭 앞에 타입을 지정해주세요. 


    지정안하면 때에 따라 자기멋대로 해석하기도 하거든요(브라우저)

  • MelRanG
    729
    2020-03-11 17:14:30

    아 undifined가 뜬건 이클립스에러였나보네요.. 감사합니다

  • siva6
    5k
    2020-03-11 17:22:00

    지금 저 부문 코드들도... 어딘가 다른 scope안에 들어가 있는거 아닌가요?

    var를 안 붙이면 global scope가 되서 어디에서 든지 접근이 가능합니다.
    var를 붙이면 해당 영역으로 scope가 잡히구요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.