자바스크립트에 스코프란 어떤 변수들에 접근할 수 있는 범위를 정의한다.
일반적으로 스코프엔 두가지 종류가 있다.
변수가 함수 바깥이나 {}바깥에서 선언되었다면 전역 스코프에 정의한다.
전역 변수로 선언된다면 코드 모든 곳에서 변수를 사용 가능하다.
심지어 함수에서도 가능하다 .
const hello = ‘Hello Marcus’
function marcusHello () {
console.log(hello)
}
console.log(hello) // ‘Hello Marcus!’
sayHello() // ‘Hello Marcus!’
그러나 위와 같이 전역 스코프를 이용하여 변수를 선언하는 것은 좋지 않다.
왜냐하면, 두 개 이상의 변수의 이름이 충돌하는 경우가 생길수 있다.
지역 스코프는 코드에서 특정 부분에서만 사용이 가능한 변수
JS에서는 크게 두 가지의 지역 스코프가 존재한다.
함수 스코프와 블록 스코프
만약 함수 내부에서 변수를 선언한다면
그 변수는 함수 내부에서만 사용이 가능.
블록 스코프는 중괄호{} 내부에서 const 혹은 let 으로 변수를 선언하면
그 변수들은 중괄호 블록 내에서만 사용이 가능
var = 함수 단위로 자신만의 스코프를 가진다 (함수 스코프)
let = 블록 단위로 자신만의 스코프를 가진다.예측하기 쉬운 코드를 작성 가능(블록 스코프)
값이 변하지 않는 변수, 즉 상수를 정의할 때 사용하는 키워드로
let 키워드와 동일하게 블록 스코프를 따른다.
값을 재정의 할수 없다.
var = 함수 스코프,변수 재선언 가능,변수 재할당 가능
var a = 0;
a //0
var a = 1;
a //1
a = 2;
a //2
let = 블록 스코프,변수 재선언 불가능,변수 재할당 가능
let b = 0;
b // 0;
let b = 1; // SyntaxError
b = 2
b //2
const = 블록 스코프,변수 재선언 불가능,변수 재할당 불가능
const c = 0;
c //0
const c = 1; //SyntaxError
c = 2 //Assignment to constant variable.
글로벌 스코프에서 선언된 함수,var 키워드를 이용해 선언된 변수는 window 객체와 연결.
전역 범위에 너무 많은 변수를 선언하지 않도록 주의 할것