$(document).ready(function(){}); 안에 변수 선언시 관련 문의
본문
경우1 :
<script>
var isEraser = false;
</scirpt>
이상태에서 크롬 개발자 도구 통해 isEraser 확인 해보면 false로 당연히 출력 되는데요
경우 2 :
[code]
<script>
$(document).ready(function(){
var isEraser = false;
});
</script>
[/cdoe]
이렇게 하면 "not defined" 이렇게 나옵니다.
우연히 이렇게 출력 해보니 이 둘의 차이점을 발견하게 되었습니다.
이 차이점을 자세히 알면 기초에 도움이 될까봐
이렇게 문의 드립니다.
왜 이런 차이가 발생하는건가요?
!-->답변 2
scope 차이 입니다.
ready 에서의 선언된 변수의 scope 는 ready 이며
디버그콘솔 에서 확인하는 scope 는 전역입니다.
위와 같은 형태로 되어있을 경우
전역 scope 에서 내부 scope 를 참조할 방법은 없고,
내부 scope(ready) 에서 var 키워드 없이 변수를 선언하면 됩니다.
JavaScript 에서 var 키워드 없이 선언된 변수는 전역 scope. 전역변수가 됩니다.
ready 에서의 선언된 변수의 scope 는 ready 이며
디버그콘솔 에서 확인하는 scope 는 전역입니다.
위와 같은 형태로 되어있을 경우
전역 scope 에서 내부 scope 를 참조할 방법은 없고,
내부 scope(ready) 에서 var 키워드 없이 변수를 선언하면 됩니다.
JavaScript 에서 var 키워드 없이 선언된 변수는 전역 scope. 전역변수가 됩니다.
$(document).ready(function(){
var isEraser = false;
});
alert(isEraser); //이렇게 해보면 알겠죠 당연히 undefined
답변을 작성하시기 전에 로그인 해주세요.