
자바스크립트의 변수와 함수는 생성과 동시에 접근하거나 호출할 때 일정한 제약을 갖는데, 이를 스코프라고 한다.
변수 a는 조건문이나 반복문 또는 중괄호 내부에서 선언하지 않았기 때문에 전역 스코프를 갖는다.
이처럼 전역 스코프를 갖는 변수를 '전역 변수(Global Variable)'라고 한다.
let a = 1;
function foo(){
console.log(a);
}
변수 a는 함수 내부에 선언되었기 때문에 지역 스코프를 갖는다.
이처럼 지역 스코프를 갖는 변수를 '지역 변수(Local Variable)'라고 한다.
function foo(){
let a =1;
}
자바스크립트의 지역 스코프는 블록 스코프 외에도 한 가지 더 있다.
함수를 기준으로 지역 스코프를 정하는 '함수 스코프'이다.
함수 스코프란 함수 내부에서 선언한 변수만 지역 스코프를 갖는다는 의미이다.
var 키워드로 선언한 변수는 함수 스코프를 갖는다.
if (true){
var a =1;
}
console.log(a);
위 코드에서 if문 내부에 변수 a가 선언 되었지만 var 키워드로 선언되었기 때문에 if문 밖에서도 사용 가능하다.
function foo(){
var a =1;
}
console.log(a);// 에러 발생
위 코드에서는 함수 내부에 var키워드로 a 변수를 정의해주었기 때문에 a는 지역 변수로 취급된다. var는 혼란에 빠뜨릴 여지가 많기 떄문에 보편적인 let이나 const 키워드를 이용해 변수를 정의해야 한다.