본문 바로가기

JS 전역변수와 지역변수 본문

MarkUp

JS 전역변수와 지역변수

개발자로 거듭나기 2022. 7. 28. 15:11
반응형

변수

변수는 데이터를 저장하는 공간이고, 변수는 크게 전역변수와 지역변수로 나눌 수 있습니다.

전역변수

함수 블록{} 밖이나 안에서 자유롭게 사용할 수 있습니다.

var 변수;
function 함수() {
    실행문
}

지역변수

함수 블록{} 내에서만 사용할 수 있습니다.

function 함수() {
    var 변수;
    실행문
}


반응형

예시 1

함수 내부에서 전역변수 kor의 값을 바꿉니다.

var kor = 90;
function getScore(){
    kor = 100; // 전역변수의 값을 바꿈
    console.log(kor); // 100
}

getScore();
console.log(kor); // 100
결과 확인하기
100
100

예시 2

함수의 지역변수로 사용하려면 함수 내부에서 변수의 선언 키워드를 통해서 선언해야 함수의 지역변수로 동작합니다.

var kor = 90;
function getScore(){
    var kor = 100; // 지역변수
    console.log(kor); // 100
}

getScore();
console.log(kor); // 90
결과 확인하기
100
90

예시 3

블록{}에 의해 변수의 범위가 달라지는 것을 변수의 scope라고 합니다 전역 변수는 블록 내와에서 사용할 수 있기 때문에, 자칫 동일한 이름으로 덮어 써질 수 있는 문제가 있습니다. 따라서 전역변수보다는 지역변수가 안전합니다.

function getScore(){
    var kor = 100; // 지역변수
    console.log(kor); // 100
}

getScore();
console.log(kor); // 에러
결과 확인하기
100
kor is undefined

함수 레벨 스코프와 블록레벨 스코프

키워드 스코프 설명
var 함수 var의 scope는 함수 내부입니다. 함수 내부를 벗어난 외부에서 호출할 수 없습니다. for나 while같은 블럭에서 선언된 변수는 외부에서 호출할 수 있습니다.
let 블록 {} 블록안에서만 동작합니다. 블록 외부에서는 호출할 수 없습니다. 또한 동일한 변수를 2번이상 선얼할 수 없습니다.
const 블록 {} 블록안에서만 동작합니다. 블록 외부에서는 호출할 수 없습니다. 선언 후, 값을 다시 할당할 수 없습니다.
// 함수의 전역변수
var sum1 = 10;
function add1(){
    sum1 = 20;
}
add1();
console.log('전역' + sum1);

// 함수의 지역변수
var sum2 = 30;
function add2(){
    var sum2 = 40;
    console.log('지역' + sum2);
}
add2();
console.log('전역' + sum2);

// 블록의 지역변수
var num1 = 50;
if (num1 === 50){
    var num1 = 60;
}
console.log('전역' + num1);
let num2 = 70;
if(num2 === 70){
    let num2 = 80;
    console.log('지역' + num2);
}
console.log('전역' + num2);
결과 확인하기
전역 20
전역 40
전역 30
전역 60
전역 80
전역 70
반응형
Comments