자바스크립트 - 변수

더미벨·2022년 5월 9일
1

단어 표기법

  • camelCase: 대소문자로 구분 ex)myName → 더 많이 사용하는 방법
  • snake_case: 언더바로 구분 ex)my_name

변수를 선언하는 3가지 방법

  1. var: 전통적인 변수 선언 방법으로, 여러가지 문제점이 있어 후에 let이라는 새로운 변수선언 방식이 등장하게 된다.

    • 문제점1: 중복선언 가능
    var a = 1
    console.log(a)
    var a = 2
    console.log(a)
    //변수의 이름은 절대 중복이 되면 안되는데 var를 사용하여 선언할 경우 중복이 된다.
    • 문제점2: 호이스팅시 변수의 선언과 초기화(undefined로)를 같이 시켜버림.
    • 💡호이스팅이란? : 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것.
    console.log(a) // undefinded 출력. 선언은 호이스팅되지만 할당은 호이스팅되지 않기 때문.
    /*원래대로라면 에러가 나야 하지만 호이스팅시 변수의 선언과 초기화(undefined)로 같이 시켜버림.
    */   
    var a = 1
    console.log(a) // 1 출력. 문제 없음
    • 문제점3: 함수 스코프(function-scoped) → 함수(function)만 지역변수로 호이스팅이 되고 나머지는 다 전역변수로 올려버림. ex) for문, if문 등..
    • 💡전역변수와 지역변수란?
      • 전역변수: block 밖에서 선언을 한 어디든 쓰일 수 있는 변수
      • 지역변수: block 안에서 선언된 변수. block 안에서만 쓸 수 있음
    for(var i = 1; i<5; i++ {
    	console.log(i)
    } // 문제 없이 1, 2, 3, 4 출력
    
    console.log(i) // 원래대로라면 에러가 나야하지만 5가 출력. var가 함수 스코프라 i를 전역변수로 올렸기 때문.
  • let
    • var의 문제점을 보완하기 위해 나온 변수 선언 방식.

    • 블록 스코프(block-scoped)

    • 함수의 선언과 초기화가 분리되어 일어남.

    • TDZ(Temporal Death Zone)의 영향을 받음. → 선언 및 할당 전에는 사용 불가.

      console.log(name) // TDZ의 영역 안에 있기 때문에 사용 불가 
      let name = "Dumibell" // 함수 선언 및 할당
      console.log(name) // 사용 가능
  • const
    - 변하지 않는 값을 만들 때 사용. 재할당 불가

변수가 필요한 이유

console.log(10000*0.1); 
// 결과값인 1000은 출력이 되겠지만 숫자 10000과 0.1이 무엇을 의미하는지 알 수 없다.
let 가격 = 10000; // 가격은 변할 수도 있으니 let을 사용
const 부가가치세율 = 0.1; // 만약 부가가치세율은 무조건 0.1로 고정이고 실수로라도 변경이 되면 안될 경우에 재할당이 불가능한 const를 사용하면 좋다. 
let 부가가치세 = 가격 * 부가가치세율
//변수를 선언함으로써 의미가 보다 명확해진다.
profile
프론트엔드 개발자👩‍💻

0개의 댓글