728x90
스코프
JavaScript에서 scope(스코프)란 변수의 유효범위 라고 할 수 있다.
자바스크립트에서 스코프란 작성된 코드를 둘러싼 환경으로, 어떤 변수들에 접근할 수 있는지를 정의한다.
스코프는 크게 전역스코프와 지역스코프로 나뉠 수 있다.
전역스코프 ?
- 함수 안에 포함되지 않은 곳에 정의하는 것으로 코드 어디에서든지 참조할 수 있다.
지역스코프 ?
- 함수 내에 정의된 것으로 정의된 함수 내에서만 참조할 수 있다.
var는 전역 스코프, let과 const는 지역 스코프이다.
var num = 1;
function a() {
var num = 2;
console.log(num);
}
a() // 2
console.log(num) // 1
위의 코드를 보면 a함수에서는 num이 2로 출력이 되며,
함수 밖에서는 num의 값이 1로 출력이 된다.
함수 내에서 var num = 2; 를 해주었기 때문에 2라고 출력이 되었으며, 저 코드가 없었더라면 1을 출력을 할 것이다.
이것은 함수스코프의 예시이고, let이나 const의 예시를 보자.
var pyo = 'jung min';
for ( pyo=0; pyo <5; pyo++){
pyo+=pyo
}
console.log(pyo); // jung min;
호이스팅
변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징이다.
console.log(score); // undefined
var score; // 변수 선언
위 코드는 변수 선언 이전에 score를 출력하였다.
코드를 보면 score를 console로 찍는 부분에서 에러가 날 것이라고 생각할 수 있겠지만, undefined가 찍히는 것을 볼 수 있다.
이것은 변수 선언이 소스코드가 순차적으로 실행되는 런타임 이전 단계에서 먼저 실행된다는 증거이다!
728x90