본문 바로가기

JavaScript/DAY 34 _ 23.10.11

변수

// 변수 ★★★

        // # ES5 (ver_ECMA2005)


        // 1. 변수의 선언 : var
        // --> 변수의 type이 없다....
        var a = 10;
        
        // 2. 특징
        // 2-1. 재선언 가능: var로 선언된 변수는 같은 이름으로 여러 번 선언할 수 있습니다.
        var a = 10;
        var a = "안녕하세요";   // --> 에러 없이 a를 다시 선언..... 되기는해....
        console.log(a);        // --> 출력 : 안녕하세요

        // 2-2. 리터럴
        a = 12;         //--> 숫자(정수형)
        a = 10.3;       //--> 실수형
        a = "큰따옴표"   //--> 문자열
        a = '작은따옴표' //--> 이것도 문자열
        a = true        //--> boolean
        a = null;       //--> 참조타입
        
        a = undefined;  
        //--> 변수가 초기화되지 않았거나 값이 할당되지 않았을 때 기본적으로 갖는 값
        //--> 명시적으로 선언하지 않아도, 

         변수를 선언하고 값을 할당하지 않으면 해당 변수는 자동으로 undefined로 설정됨!!
        console.log(a);        // --> 출력 : (연한글씨로) undefined


        // 2-3. 스코프 : 메모리의 소멸이 안됨..
        {
            var b = 20;
            console.log(b);
        }
        console.log(b);     // --> 스코프 밖인데도 출력이 된다ㅠㅠ
        // --> 전역 스코프에 변수가 누출될 수 있는 문제가 발생할 수 있음!!!


        // 2-4. 호스팅 :
        console.log(y); // 에러가 아니라 'undefined' 출력
        var y = 5;
        // --> 변수 선언이 함수 또는 블록의 상단으로 끌어올려지기 때문에 

                변수를 선언하기 전에 사용해도 에러가 발생하지 않습니다.
        // --> 이는 예측하지 못한 동작을 초래할 수 있습니다.


// ## ES6 (ver_ECMA2015)


        // 1. 변수의 선언
        // let과 const가 도입됨!!!
        // let : 블록 스코프를 갖는, 재할당 가능한 변수
        // const : 재할당 불가능한 변수



        // 1-1. let ★

        // let은 블록 스코프를 가지는 변수를 선언하는 데 사용됩니다.
        // 이것은 변수가 선언된 중괄호 {} 내에서만 유효하다는 것을 의미합니다.
        // let 변수는 재할당이 가능하므로 값을 다시 설정할 수 있습니다.
        // 호스팅이 발생하지만 초기화되기 전에 변수에 접근하면 ReferenceError가 발생합니다.

        let x = 10; // 변수 선언 및 초기화
        x = 20; // 재할당 가능
        {
            let y = 30; // 블록 스코프 변수
            console.log(x); // 20
            console.log(y); // 30
        }
        console.log(x); // 20
        // console.log(y); // 에러: y는 블록 밖에서 접근 불가

       // 1-2. const ★★ (= java에서의 final과 비슷함)

        // const는 블록 스코프를 가지는 상수를 선언하는 데 사용됩니다. 상수는 한 번 할당하면 다시 할당할 수 없습니다.
        // const 변수는 재할당이 불가능하며 선언과 동시에 초기화해야 합니다.
        // const는 일반적으로 상수 값이나 변경되지 않는 변수를 선언할 때 사용됩니다.
        // 호이스팅이 발생하지만 초기화되기 전에 변수에 접근하면 ReferenceError가 발생합니다.

        {
            const q= 50;
            // const q= 30;     -->  이건 당연히 안되고
            // q = 40;          -->  const는 상수선언이니까 이런식으로 재선언 불가!!!!! error 뜨면서 밑에 코드 실행 X
            console.log(q);
        }

        const pi = 3.14159265359; // 상수 선언과 초기화
        // pi = 3.14; // 에러: 상수는 재할당 불가능
        {
            const gravity = 9.81; // 블록 스코프 상수
            console.log(pi); // 3.14159265359
            console.log(gravity); // 9.81
        }
        console.log(pi); // 3.14159265359
        // console.log(gravity); // 에러: gravity는 블록 밖에서 접근 불가

'JavaScript > DAY 34 _ 23.10.11' 카테고리의 다른 글

배열  (0) 2023.10.11
조건/반복문  (1) 2023.10.11
연산자  (0) 2023.10.11
JS Basic2  (0) 2023.10.11
JS basic  (0) 2023.10.11