이전 목록 다음
채택완료

$(document).ready(function(){}); 안에 변수 선언시 관련 문의

경우1 :

Copy
<script>var isEraser = false;</scirpt>


e27bfe3f875b0f3b32ffabfa89603fa2_1502961543_731.JPG
 

이상태에서 크롬 개발자 도구 통해 isEraser 확인 해보면 false로 당연히 출력 되는데요


경우 2 :

[code]

<script>

$(document).ready(function(){

var isEraser = false;

});

</script>

[/cdoe]

e27bfe3f875b0f3b32ffabfa89603fa2_1502961604_1674.JPG
이렇게 하면 "not defined" 이렇게 나옵니다.


우연히 이렇게 출력 해보니 이 둘의 차이점을 발견하게 되었습니다.


이 차이점을 자세히 알면 기초에 도움이 될까봐 


이렇게 문의 드립니다.


왜 이런 차이가 발생하는건가요?

|

답변 2개

채택된 답변
+20 포인트
scope 차이 입니다.



ready 에서의 선언된 변수의 scope 는 ready 이며

디버그콘솔 에서 확인하는 scope 는 전역입니다.



위와 같은 형태로 되어있을 경우

전역 scope 에서 내부 scope 를 참조할 방법은 없고,

내부 scope(ready) 에서 var 키워드 없이 변수를 선언하면 됩니다.



JavaScript 에서 var 키워드 없이 선언된 변수는 전역 scope. 전역변수가 됩니다.

$(document).ready(function(){

var isEraser = false;

});


alert(isEraser); //이렇게 해보면 알겠죠 당연히 undefined



답변을 작성하려면 로그인이 필요합니다.