Birthday Bora

스코프 본문

Java Script

스코프

ChoiBora 2022. 3. 11. 22:46
더보기

공부한 걸 혼자서 정리하는 자바스크립트

[ 본 내용은 공부한 내용을 제 생각대로 간략하게 정리를 해서 올리는 글입니다. ]


스코프는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다.

var로 선언한 변수와 let 또는 const 로 선언한 변수의 스코프도 다르게 동작한다.

fnuction add(x, y) {
	// 매개변수는 함수 몸체 내부에서만 참조 가능하다.
    // 매개변수의 유효한 범위는 함수 몸체 내부.
    console.log(x, y);
    return x + y;
}

add(5, 10);

// 매개변수는 함수 몸체 내부에서만 참조할 수 있다.
console.log(x, y); // ReferenceError : x is not dedfuned

let Day1 = 1; // 코드 가장 바깥 영역에서 선언한 변수

if (true) {
	let Day2 = 2; // 코드 블록 내에서 선언한 변수
    if (true) {
        let Day3 = 3; // 중첩된 코드 블록 내에서 선언한 변수
    }
}

functoin One() {
	let Day4 = 4; // 함수 내에서 선언한 변수
    
    function Two() {
    	let Day5 = 5; // 중첩된 함수 내에서 선언한 변수
    }
}

console.log(Day1); // 1
console.log(Day2); // 2
console.log(Day3); // 3
console.log(Day4); // ReferenceError: Day4 is not defined
console.log(Day5); // ReferenceError: Day5 is not defined

변수는 자신이 선언된 위치에 의해 자신이 유효한 범위, 즉 다른 코드가 변수 자신을 참조할 수 있는 범위가 결정된다.

 

모든 식별자( 변수 이름, 함수 이름, 클래스 이름 등 ) 는 자신이 선언된 위치에 의해

다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다.

 

스코프는 식별자 접근 규칙에 따른 유효 범위.

식별자에 접근할 수 있는 범위가 존재.

범위는 중괄호 또는 변수에 의해 나눠진다.

 

코드는 전역과 지역으로 구분할 수 있다.

구분 설명 스코프 변수
전역 코드의 가장 바깥 영역 전역 스코프 전역변수
지역 함수 몸체 내부 지역 스코프 지역 변수
let x = "day x";	// 전역 스코프
let y = "day y";	// 전역 스코프

function outer() {	// 지역 스코프 #1
	let z = "outer day z";	지역 스코프 #1
    
    console.log(x); // day x	// 지역 스코프 #1
    console.log(y); // day y	// 지역 스코프 #1
    console.log(z); // outer day z	// 지역 스코프 #1
    
    function inner() {	// 지역 스코프 #2
    	let x = "inner day x";	// 지역 스코프 #2
        
        console.log(x); // inner day x	// 지역 스코프 #2
    	console.log(y); // day y	// 지역 스코프 #2
    	console.log(z); // outer day z	// 지역 스코프 #2
    }
    
    inner();	// 지역 스코프 #1
    
}

outer(); // 전역 스코프

console.log(x); // day x // 전역 스코프
console.log(z); // ReferenceError : z is not defined // 전역 스코프

 

'Java Script' 카테고리의 다른 글

프로퍼티 어트리뷰트  (0) 2022.03.14
함수  (0) 2022.03.09
원시 값  (0) 2022.03.08
객체 리터널  (0) 2022.03.07
타입 변환  (0) 2022.03.06
Comments