전역변수 와 지역변수
변수는 함수 블록{}을 기준으로 변수의 선언 위치에 따라 '전역 변수'와 '지역 변수'로 나누어집니다.
전역 변수
'전역변수'는 함수 블록{} 밖이나 안에서 자유롭게 사용 가능합니다.
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 |
같은 블록{}에서는 이미 선언한 변수를 중복해서 선언할 수 없고 저장된 값을 변경할 수도 없습니다. 블록{}, 제어문 블록{}에서도 지역 변수가 존재합니다. |
'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 |
댓글