참조 : http://justmakeyourself.tistory.com/entry/javascript-scope
스코프 : 유효범위
const num = 123;
console.log(num); // 123 출력
그렇다면,
{
const number =456;
}
console.log(number);
위의 넘버는 어떻게 출력이 될까?
--> 에러 생성
정적 스코프 , 동적 스코프
const x = 10; function func1(){ const x=7; func2(); } function func2(){ console.log(x); } func1(); //콘솔에 찍히는 x 값은 무엇일까요?
A. 10
--> 자바스크립트의 스코프는 "정적"이기 때문. (정적스코프는 선언되었을 때를 기준으로 함.) 반대로 동적스코프는 실행될 때를 기준으로.
func2가 실행되었을 때의 x 값은 7일지 몰라도, 정의되었을 때 x는 10을 가리키고 있음.
전역스코프
전역 변수라는 말은 '모든 곳에서 접근' 할 수 있는 변수.
따로 아무 블록없이 변수를 하면 전역변수가 됨.
--> 전역 변수를 되도록이면 없게 하는 것이 바람직함.
어디서든 접근할 수 있다는 것은 의도치 않은 버그를 일으킬 수 있기 때문.
요약
아무 블록 없는 상태에서 작성하면 전역 스코프
var : 함수스코프
let, cosnt : 블록 스코프