WEB/vanilla.js

JavaScript 변수와 데이터 타입

구니바 2023. 3. 22. 19:39

1. JavaScript의 변수

var let const
업데이트 가능 업데이트 가능 읽기 전용
전역변수 지역변수 지역변수
hoisting block scope block scope

var 는 구 방식으로 현재는 var 보다 let 과 const 를 주로 사용
const 는 let 과 마찬가지로 블록 스코프(block scope)를 가지며, var 와 달리 호이스팅(hoisting)이 일어나지 않음.

참고) console.dir

CLI 는 객체를 온전히 보여주지 못할 때가 있음
[Object] [Object] 형태로 보여줌
이때 console.dir를 하면 객체의 형태로 보여줌

2. JavaScript의 데이터 타입

2-1) 원시형 데이터 타입

  • 특징
    • 값 자체가 메모리에 저장됨
    • 기본 타입은 불변성을 가짐
    • 문자열을 변경하려고 하면 새로운 문자열이 생성되고 기존의 문자열은 그대로 남아있음
      -> garbage collector
  • 종류
    • Number 숫자 (typeof: "number")
      숫자가 아닌데 숫자라고 한 경우 -> NaN
      typeof NaN = Number
    • String 문자열 (typeof: "string")
    • Boolean 불리언(true, false) (typeof: "boolean")
    • Null 값 없음 (typeof: "object")
      let b = null
    • Undefined 선언은 했지만 값이 할당되지않음 (typeof: "undefined")

2-2) 참조형 데이터 타입

  • 특징
    • 메모리 주소값을 저장해줌
    • 가변성을 가짐
  • 종류
    • Object 객체
    • Array 배열
    • Function 함수
// 참조형 데이터 타입 예시
var obj1 = {name: 'Alice', age:20};
var obj2 = obj1;
// 객체에 접근하기 위한 이름이 obj1 이었는데 obj2를 통해 또다른 접근 권한을 또 줌
// obj1 과 obj2 는 같은 객체를 가리키고 있음

obj1.name = 'Bob';
console.log(obj2.name); // Bob 출력
let obj3 = {name: 'Alice', age:20};
let obj4 = {name: 'Alice', age:20};
// obj3 와 obj4는 객체의 내용만 같고 완전히 다른 별개의 객체임
const arr=[0, 1, 2];
a[0]=2;
console.log(a[0]) //2 출력
//왜냐하면 배열은 참조형 변수라서 주소값만 변하지 않으면 됨

'WEB > vanilla.js' 카테고리의 다른 글

JavaScript 함수와 객체  (0) 2023.03.22
JavaScript 조건문과 반복문  (0) 2023.03.22
JavaScript 연산자와 표현식  (0) 2023.03.22
JavaScript의 프로퍼티와 메서드  (0) 2023.03.22
JavaScript란?  (0) 2023.03.13