전역변수와 지역변수
var : 함수 레벨 스코프
-변수의 중복선언이 가능
-유일하게 함수 블록{} 내부에서 지역 변수가 존재
전역변수
var변수의 유효범위는 함수임. {}가 아님.
따라서 if문 같은 구문의{}안에서 변수를 선언해도 {}밖에서 변수 사용 가능
지역변수
function안에서만.
함수 안에서 선언된 var변수는 함수호출이 끝나면 사라짐
let : 블록 레벨 스코프
ES6에서 만들어짐
-같은 블록{}에서는 이미 선언한 변수를 중복 선언 불가
-블록{}, 제어문블록{}에서도 지역변수가 존재
==>즉 var과 let의 차이는 함수가 아닌 {}안에서 생성되어도 남아있느냐와 중복선언이 가능한가 차이임
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//var변수의 유효범위는 함수이다.
var num1=50;//전역변수
if(true){
var num2=100;//전역취급
}
console.log(num2);
var num3=100;//전역변수
function add(){
var num4=200;//지역변수
num3+=num4;
}
add();
//console.log(num4);//에러발생. num4 is not defined
console.log(num3);//300
//ES6-let변수, 중괄호 스코프(변수의 중복 선언 x)
let x1=100;
if(true){
let x2=200;//지역변수
}
// console.log(x2);//err
let x3=100;//전역변수
function add2(){
let x4=200;//지역변수
x3+=x4;
}
add2();
// console.log(x4);//err
console.log(x3);//300
</script>
</body>
</html>
'JS' 카테고리의 다른 글
221228 JS 클로저은닉 (0) | 2022.12.28 |
---|---|
221228 JS 클로저 (0) | 2022.12.28 |
221228 JS 함수의 가변인자 (0) | 2022.12.28 |
221228 JS 함수-익명함수, 즉시실행함수 (0) | 2022.12.28 |
221228 JS 함수-선언적 함수, 호이스팅 (0) | 2022.12.28 |