ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 변수
    javascript 2023. 3. 27. 19:54
    반응형

    * 변수 생성 과정 : 1. 선언 2. 초기화(undefined를 할당하는 단계)  3. 할당


    * 스코프

     

    - 함수 스코프 : 함수function내에서 선언한 변수만 그 지역변수가 되고 유일하게 벗어날 수 없는 범위가 함수function임 -> var

     

    - 블록 스코프 : 코드 블록(함수, if문, for문, while문, try/catch문 등)에서 선언된 변수는 코드 블록 내에서만 유효하며 외부에서 접근 불가 = 지역변수 -> let, const

    /*if문안에서 var로 선언한 변수는 if문 밖에서도 사용 가능함*/
    const age = 30;
    
    if(age > 19){
    	var txt = '성인';
    }
    
    console.log(txt);//성인
    
    /*하지만 var는 함수 스코프이기 때문에 함수 내에서 사용되면 함수 밖에서 사용 불가*/
    function add(num1, num2){
    	var result = num1 + num2;
    }
    
    add(2, 3);
    
    console.log(result);//error
    //---------------------------------------------------------------------------------------------
    //if문안에서 let과 const로 선언한 변수는 블록 스코프이기 때문에 if문 밖에서 사용 불가, if문의 { }안에서만 사용 가능
    const age = 30;
    
    if(age > 19){
    	let txt = '성인';
    }
    
    console.log(txt);//error

    * var

    - 1. 선언과 초기화 동시 2. 할당

    - 유연한 변수 선언 가능

    - 한번 선언된 변수를 다시 선언 가능

    - 선언하기 전에 사용 가능

    - var로 선언된 모든 변수는 최상위로 끌어올려져 동작함 = 호이스팅

    /*var는 선언하기 전에 사용 가능, 에러를 일으키지 않음*/
    console.log(name);//undefined
    
    var name;
    
    //---------------------------------------------------------------------------------------------
    /*호이스팅*/
    var name;
    
    console.log(name);//undefined : name이라는 선언은 호이스팅이 되지만 Mike라는 할당은 호이스팅이 되지 않음, 즉 name이라는 변수만 올려지고 Mike라는 값은 그 자리에 있음
    name = "Mike";

     

    * let

    - 1. 선언 2. 초기화 3. 할당

    - 재선언 불가, 재할당 가능

    - 변할 수 있는 값

    /*let은 선언하기 전에 사용하면 에러를 일으킴*/
    console.log(name);//ReferenceError
    
    let name = "Mike";
    
    //---------------------------------------------------------------------------------------------
    /*
    let과 const도 호이스팅이 가능하지만 Temporal Dead Zone때문에 error가 남
    let과 const는 할당을 하기 전에 사용할 수 없음
    */
    console.log(name);//TDZ
    
    let name = "Mike";//함수 선언 및 할당
    console.log(name);//사용 가능
    
    /*다른 예시*/
    //문제 없음
    let age = 30;
    
    function showAge(){
    	console.log(age);
    }
    
    showAge();
    
    //문제 있음
    let age = 30;
    
    function showAge(){
    	console.log(age);//TDZ
        
    	let age = 20;
    }
    
    showAge();
    //---------------------------------------------------------------------------------------------

     

    * const

    - 1. 선언 + 초기화 + 할당 동시

    - 재선언 불가, 재할당 불가

    - 절대로 변하지 않는 값

     

    변수 사용할 때 주의할 점

    1. 변수는 문자와 숫자, $와 _만 사용 가능

    2. 첫글자는 숫자가 될 수 없음

    3. 예약어는 사용할 수 없음

    4. 가급적 상수는 대문자 사용

    var age;
    age = 30;
    
    let name;
    name = "Lee";
    
    const gender;
    gender = "F";
    
    /*
    var와 let은 괜찮지만 const에서 에러가 남
    선언과 동시에 할당을 해야하므로
    */
    반응형

    'javascript' 카테고리의 다른 글

    비교연산자  (0) 2023.03.27
    연산자  (0) 2023.03.27
    형변환(자동 형변환, 명시적 형변환)  (0) 2023.03.27
    alert() ,prompt(), confirm()  (0) 2023.03.27
    javascript 자료형  (0) 2023.03.27

    댓글

Designed by Tistory.