본문 바로가기
Front-End/JavaScript

[JavaScript] 변수의 범위

by 민바이민 2021. 1. 9.

JavaScript

변수의 범위

자바스크립트에서 객체나 배열, 함수는 모두 변수이다. 변수의 범위란 변수가 접근할 수 있는 변수, 객체 그리고 함수의 집합을 의미합니다.
값이 언제든지 변할 수 있으면 변수이다.

 1. 지역 변수

함수 내에서 선언된 변수를 가리킵니다. 지역 변수는 변수가 선언된 함수 내에서만 유효하며, 함수가 종료되면 자동으로 메모리에서 사라집니다.
지역 변수는 함수 안에서 가장 먼저 선언해줘야한다.

function fun1(start, end){    // 지역변수 start, end, sum, i
    let sum = 0;
    for(let i=start; i<=end; i++){
        sum += i;
    }
    return sum;
}

fun1(10, 3);    // start, end, sum, i 를 알 수 없음

 2. 전역 변수

함수의 외부에서 선언된 변수를 가리킵니다. 전역 변수는 프로그램의 어느 영역에서나 접근할 수 있으며, 웹 페이지가 닫혀야만 메모리에서 사라집니다.

let a = 10;    // 전역 변수 a

function fun1(x){
    console.log(`전달된 값 : ${x}`);
}

fun1(a);

 

** 우리가 var 가 아닌 let을 사용해야하는 이유 !

var val = 50;	//전역변수 선언
if(val == 50){
	var val = 60;	//지역변수 선언
    console.log(val);
}
console.log(val);

위의 코드를 보면 전역변수를 먼저 선언해주고 if문 안에서 지역변수를 선언하여 if문 안에서 val을 한번 출력해주고, if문 밖에서 val을 한번 출력해줬다. 그렇다면 출력은 60 50이 나와야 정상인데, var를 쓰면 버그가 작동하면 콘솔창에 보면 60 60 으로 출력된다. 그러므로 정확하게 구분해주기 위해서는 let을 사용해야하고 let을 사용하면 정상적으로 60 50 이 출력된다.

댓글