JS 변수(Variable) & 상수(Constants), 데이터 타입

서린·2024년 4월 19일
0

greenstudy

목록 보기
30/44
post-thumbnail

변수(Variable)란?

  • 변하는 데이터를 저장하기 위한 공간

상수(Constants)란?

  • 최초 대입한 값이 절대 변하지 않는 값
  • 상수명은 모두 대문자이며, 단어와 단어 사이 언더바(_)로 연결

Js에서의 변수와 상수

  • var
    중복 선언 가능, 재할당 가능, 함수레벨 스코프
    var의 경우 전역 스코프나 호이스팅 문제 등이 있으므로 사용을 지양하는 것이 좋음
var num1 = 1; // 최초 선언
var num1 = 2; // 중복 선언
num1 = 3; // 재할당
  • let
    중복 선언 불가능, 재할당 가능, 블록레벨 스코프
let num2 = 2;
// let num2 = 3; 중복선언 x
num2 = 5; // 재할당 
  • const
    중복 선언 불가능, 재할당 불가능, 블록레벨 스코프
const NUM = 3;
// const NUM = 5; 중복 선언 x
// NUM = 4; 재할당 x

스코프(Scope)란?

  • 변수나 함수의 유효 범위
  • 변수나 함수가 어디에 선언되었는지에 따라 접근 가능 여부가 달라짐
  • 크게 전역 레벨, 지역, 블록 3가지의 스코프로 구분할 수 있음
  • 전역 스코프(Global Scope)
    전역 스코프에서 선언된 변수와 함수는 코드의 어느 곳에서나 접근 가능하며 프로그램이 실행되는 동안 유효
let test = "전역 스코프"; // 전역 스코프

function put() {
		// test가 전역스코프이므로 put 함수 내에서도 사용 가능
    console.log(test);
}

put(); // 전역 스코프 출력
console.log(test); // 전역 스코프 출력
  • 지역스코프
    함수 내에서 선언된 변수와 함수는 해당 함수 내부에서만 유효하고, 함수가 실행될 때마다 새로운 스코프가 생성
    함수 레벨 스코프 라고도 불림
function put() {
    let test = "지역 스코프"; // 지역 스코프
    console.log(test);
}

put(); // 함수 레벨 스코프 출력
console.log(test); // test는 지역 스코프 이므로
  • 블록레벨 스코프
    블록 스코프는 중괄호({})로 둘러싸인 범위를 의미하고, let과 const 키워드로 선언된 변수가 블록 레벨 스토프를 가짐
if(true) {
    var test_var = "var";
    let test_let = "let";
    const TEST_CONST = "const";
}
// var는 함수 레벨 스코프이므로 사용 가능
console.log(test_var); // "var" 출력

// let와 const는 블록 레벨 스코프 이므로 에러 발생
console.log(test_let); // 에러
console.log(TEST_CONST); // 에러

호이스팅 (hoisting)

  • 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당 하는 것
  • 코드가 실행되기 전에 변수와 함수를 최상단에 끌어 올려지는 것 처럼 동작
  • var의 경우 선언되지 않은 변수가 사용 될 때, 마치 선언된 것처럼 호이스팅이 발생
    이는 오작동 또는 어디서 문제가 발생했는지 찾아내기가 쉽지 않음
// var의 호이스팅 문제
console.log(test); // undefined 출력
test = "aaa";
console.log(test); // "aaa" 출력
var test;

let와 const의 경우 이런 호이스팅의 문제를 발생시키지 않고, 선언되지 않은 변수가 사용 될때 참조 에러를 발생 시킴

console.log(test); // 참조 에러 발생으로 프로그램 종료
test = "aaa";
console.log(test);
let test;

데이터 타입(Data Type)

  • 여러종류의 데이터를 식별하는 분류
  • javascript의 경우 하나의 변수에 어떤 타입의 데이터도 저장가능
데이터 타입
number숫자
string문자열
boolean논리(true OR false)
null존재하지 않는 값
undefined값이 할당 되지 않은 상태
Symbol고유하고 변경 불가능한 값
Object여러 개의 키-값 쌍으로 이루어진 복합 데이터 타입(객체)
profile
개발 일기 ( •̀ ω •́ )✧

0개의 댓글

관련 채용 정보