스코프란?
변수에 접근할 수 있는 범위를 말합니다.
스코프는 전역 스코프와 지역 스코프로 나눌 수 있는데
전역 스코프(global scope)는 어디에서든 해당 변수에 접근이 가능합니다. (전역 변수)
지역 스코프(local scope)는, 한정적인 범위에서만 해당 변수에 접근이 가능합니다. (지역 변수)
지역 스코프에는 함수 스코프와 블록 스코프가 있습니다.
전역 스코프(global scope)
let globalName = 'global name';
{console.log(globalName);} //globalName
console.log(globalName); // globalName
전역 스코프는 블록 밖에서 선언되므로
블록 안 또는 블록 밖에서 출력해도 내용을 확인할 수 있습니다.
전역 변수들은 웹페이지가 실행되는 순간부터 끝나는 순간까지
항상 메모리에 저장되어 있기 때문에
필요한 부분에서만 정의해서 최소한으로 사용하는 것이 좋습니다.
지역 스코프(local scope)
{
let locallName = 'local name';
console.log(locallName); //local name
}
console.log(locallName); // !error
지역 변수는 블록 안에 정의된 변수들만 출력이 가능합니다.
블록 밖에서 출력할 경우 locallName변수가 정의되지 않았다는 error가 발생합니다.
블록 스코프(block scope) const, let
{let name = 'hyoni';}
console.log(name);
block scope는
const 또는 let으로 블록내부({})에 선언된 변수의 경우 해당 블록에서만 접근이 가능한 것을 의미합니다.
위 코드는
블록 안에 name변수를 선언하고 값을 할당했습니다.
블록 밖에서 name변수를 출력해 보면 블록 안에 선언된 변수의 내용을 볼 수 없기 때문에
아무 값도 출력되지 않습니다.
함수 스코프(function scope) var
function test() {
var a = '10'; // 함수 내부 선언
}
console.log(a); // Uncaught ReferenceError: a is not defined
함수가 선언되면 하나의 스코프(접근 범위)가 발생하는데 이것이 함수 스코프입니다.
함수 스코프는 함수 안에서 선언한 변수의 경우 해당 함수 내에서만 접근이 가능합니다.
위 코드는 함수 내부에서 선언한 변수를
함수 밖에서 호출했을 때 error가 발생함을 확인할 수 있습니다.
if (true) {
var a = '10'; // 함수가 아닌 외의 블록 선언
}
console.log(a); // 10
var는 함수 내에서만 지역 변수로 유지되기 때문에
function이 아닌 외의 블록({})에서 선언할 경우 전역 변수로 취급됩니다.
'JavaScript > Basics' 카테고리의 다른 글
[Javascript] 연산자(operator) (0) | 2023.09.26 |
---|---|
[Javascript] 변수 데이터 타입(data types) (0) | 2023.09.26 |
[Javascript] var를 지양해야 하는 이유 (0) | 2023.09.26 |
[HTML/CSS] input type number 오른쪽 화살표 없애기 ( 증가,감소 버튼) (0) | 2023.09.01 |
[JavaScript] 마우스 이벤트 종류 (1) | 2023.08.28 |