본문 바로가기
JS

221228 JS 전역변수 지역변수

전역변수와 지역변수


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