Javascript : var, let, const, 스코프

Javascript : var, let, const, 스코프

var

  • var(variable): 데이터 타입을 지정할 필요가 없는 변수 선언 방식
    • 함수 범위로 사용되며, 함수 또는 프로그램(전역)이 실행되면 생성되고, 종료되면 소멸되는 방식
    var globalVar = "hello"; // 전역 변수
    
    function show(){
        var localVar = "hi"; // 지역 변수
    
        console.log(localVar); // hi
        console.log(globalVar); // hello
    }
    
    console.log(localVar); // error undefined
    console.log(globalVar); // hello
    

let, const

  • var 사용의 문제점
    • 같은 이름으로 재정의 또는 재선언이 가능하며, 마지막 값으로 받는다.
    //변수 선언
    var x = "hello";
    
    // 재정의
    x = "world";
    
    // 재선언
    var x = "hello world";
    
    • 함수 스코프이기 때문에, 함수(전역) 내에 있는 동일한 변수는 재선언이 가능
    var say = "hello";
    if (true) {
        var say = "hi";
    }
    
    console.log(say); // hi 
    
    • 변수 선언하기 전에 참조할 경우 undefined를 반환(Hoisting)
      • Hoisting(호이스팅): 변수나 함수를 실행 이전(Runtime)에 미리 동작 시키거나 생성하는 것
    console.log(say) // 호이스팅으로 인한 undefined 출력
    var say = "hello";
    console.log(say); // hello
    
  • let: 가변 변수로 재정의할 수 있지만, 재선언이 불가능
  • const: 불변 변수로 재정의하거나 재선언이 불가능
  • let와 const의 특징: 블록(block) 단위 스코프

스코프

  • 스코프: 변수가 접근할 수 있는 유효 범위

  • 전역 스코프: 코드 모든 곳에서 변수를 참조할 수 있음

  • 지역 스코프: 코드 특정 부분에서만 사용 가능한 변수

  • 함수 스코프: 함수를 기준으로 범위가 구분

  • 블록 스코프: 중괄호를 기준으로 범위가 구분

  • 스코프 규칙: 바깥쪽 스코프에서 안쪽 스코프로 접근할 수 있으나, 반대로는 불가능하며, 스코프는 중첩이 가능함

  • 정적 스코프(렉시컬 스코프): 함수 선언 위치에 따라 상위 스코프가 결정, javascript의 특징

  • 동적 스코프: 함수 호출 위치에 따라 상위 스코프가 결정

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.