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")
- Number 숫자 (typeof: "number")
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 |