<script></script> 이것도 하나의 블록으로 처리되는거야??
예를 들어
<script> let n = 10; </script>
<script> document.write(n +"");</script>이런거 불가능?
<script></script> 이것도 하나의 블록으로 처리되는거야??
예를 들어
<script> let n = 10; </script>
<script> document.write(n +"");</script>이런거 불가능?
됨
그럼 스크립트 태그는 블록이 아님?
고수는 아니지만 가능함
자스 블록 기준이 뭐야??
검색해봤는데 {} 이거 중괄호가 기준가틍ㅁ
중요한 개념은 아닌거 같음
물론 무의식 속에 이 개념은 있어야 겠지만 용어를 꼭 알아야하느냐에 대해서는 아닌거같음
브라우저 자바스크립트에서 전역 객체는 window고 var로 선언한 변수에 대해서만 window에 할당됨. 그러나 스크립트 최상단에서 선언한 변수는 어쨌든 다른 스크립트에서 접근할 수 있음. 즉, 전역 변수처럼 취급됨. 단, 브라우저, 노드 js에서 전역 변수는 globalThis에 할당된 변수를 의미하는 것임.
사실 이건 자바스크립트 정의상 그런 거고 우리가 통상 사용하는 전역 변수의 의미로는 스크립트 최상단에 있으면 전역 변수라 볼 수 있음.
let으로 선언하면 블록안에서만 쓸수있다는데 그럼 맨위에 있는
스크립트 태그에서 맨 윗줄에 선언한 변수는 그 아래있는 스크립트 태그에서 접근 가능하다는 소리야?
ㄴ 니가 실험해보면 알 수 있을 것임. 중요한 것은, var로만 전역 객체에 변수를 할당할 수 있음. 즉, 자바스크립트 기준으로는 전역 객체, 전역 변수는 각각 GlobalThis(브라우저 : Window, Node.js : global), 전역 객체에 할당된 변수임.
물론, 이 정의에 따르면 직접 GlobalThis에 할당하는 것으로도 전역 변수 선언, 할당이 가능함. 다만, var로 선언한 변수는 자동으로 전역 객체에 할당되는 것임.
단, var로 선언해도 최상위 콘텍스트에서 선언된 게 아니라면 전역 변수가 아니게 됨.