| 구분 | 설명 | 스코프 | 변수 |
|---|---|---|---|
| 전역 | 코드의 가장 바깥 영역 | 전역 스코프 | 전역 변수 |
| 지역 | 함수 몸체 내부 | 지역 스코프 | 지역 변수 |
var x = "global";
function foo() {
var x = "local";
console.log(x);
}
foo(); // local;
console.log(x); // global;
스코프가 중첩되어 계층 구조를 갖는 것
function foo() {
console.log('global foo');
}
function bar() {
foo(); // local foo
function foo() {
console.log('local foo');
}
foo(); // local foo
}
bar();
foo(); // global foo
#include <iostream>
#include <string>
int main() {
int x = 1;
{
int x = 10;
std::cout << x << std::endl; // 10
}
std::cout << x << std::endl; // 1
}
var x = 1;
{
var x = 10;
console.log(x); // 10
}
console.log(x); // 10
함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정한다
JS를 포함해 대부분의 프로그래밍 언어는 렉시컬 스코프를 따른다
var x = 'global';
function foo() {
var x = 'local';
bar();
}
function bar() {
console.log(x);
}
foo(); // global
bar(); // global