본문 바로가기
JavaScript

전역변수와 지역변수 그리고 스코프

by SyuMay 2022. 7. 28.
728x90

전역변수 와 지역변수

변수는 함수 블록{}을 기준으로 변수의 선언 위치에 따라 '전역 변수''지역 변수'로 나누어집니다.


전역 변수

'전역변수'는 함수 블록{} 밖이나 안에서 자유롭게 사용 가능합니다.

let 변수
function 함수(){
}

var kor = 90;
function getScore() {
    kor = 100; // 전역 변수
    document.write(kor); //100
}
getScore();
document.write(kor) //100    
결과 확인하기

지역 변수

'지역 변수'는 함수 블록{} 내에서만 사용할수 있습니다.
함수 블록{} 안의 변수를 선언해야하지 지역변수가 됩니다.

function 함수(){
    let 변수 }

let kor = 90;
function getScore() {
    let kor = 100; // 지역 변수
    document.write(kor); //100
}
getScore();
document.write(kor) //90    
결과 확인하기

스코프

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

var 는 함수 블록{} 에서만 지역변수를 사용할수 있고 블록{} 이나 제어문 {} 에서는 지역 변수로 사용이안됩니다.
이러한 문제점을 통해 ES6 에서 새로추가된 let, const 블록{}이나 제어문 {}에서도 지역 변수를 선언할수있습니다.

// 함수의 전역변수
var sum1 = 10;
function add1() {
    sum1 = 20;            
}
add1();
document.write("전역" + sum1);                
// 함수의 지역변수
var sum2 = 30;
function add2() {
    var sum2 = 40;
    document.write("지역" + sum2);
}
add2();
document.write("전역" + sum2);        
// 블록의 지역변수
var num1 = 50;
if (num1 === 50) {
    var num1 =60;            
}
document.write("전역" + num1);        
let num2 = 70;
if (num2 === 70) {
    let num2 = 80; 
    document.write("지역" + num2);
}
document.write("전역" + num2);  
결과 확인하기

요약

변수 범위 변수 선언 특징
함수 레벨 스코프 var 변수를 중복해서 선언할 수 있습니다.
함수 블록{} 내에서만 지역 변수가 존재합니다.
블록 레벨 스코프 let var와 같지만 같은 블록{}에서는 이미 선언한 변수를 중복해서 선언할 수 없습니다.
블록{}, 제어문 블록{}에서도 지역변수가 존재합니다.
const 같은 블록{}에서는 이미 선언한 변수를 중복해서 선언할 수 없고 저장된 값을 변경할 수도 없습니다.
블록{}, 제어문 블록{}에서도 지역 변수가 존재합니다.
728x90
반응형

'JavaScript' 카테고리의 다른 글

Array 의 메서드 join( ) | push( ) | pop( )  (13) 2022.08.11
요소 선택  (8) 2022.08.07
function(함수)  (17) 2022.07.26
DATATYPE(데이터타입)  (12) 2022.07.25
제어문  (12) 2022.07.25

댓글


자바스크립트 사진

JavaScript

자세히보기