[책먹기] 목차별 간단 정리 (3장)

최예준·2024년 1월 14일

공부

목록 보기
10/19

3.1.1 var

var 는 es6 이전에 변수를 선언할 수 있는 유일한 방법이였음.
재선언, 재할당이 가능했으며, 함수 스코프를 기준으로 동작했음.

호이스팅 때문에 변수 선언 전에 변수를 사용할 수 도 있었고,
같은 함수 안에만 선언되어 있으면 다른 스코프에 선언되어있더라도 사용이 가능했음.

이런 문제 때문에 버그가 발생할때 변수의 사용 흐름을 읽기 힘들어 원인을 찾기 힘들었고,
ES6 이후에 let 과 const 가 생김

3.1.2 let, const

ES6 이후에 나온 문법으로,
변수 선언전에 변수를 사용하려고 하면 TDZ 을 만들어 이를 막아주고,
블록 스코프를 가지는 문법.

let 은 재할당이 가능하지만 const 는 재할당이 불가능 하다는 특징을 가짐.

3.2 객체와 타입

자바스크립트의 타입은 매우 느슨함.
Java 만 하더라도 변수 선언시 String a , Int a 등 타입을 선언해야함.
자바스크립트의 값은 원시타입과 객체 로 나뉨

원시타입은 number sting boolean null undifined Symbol Bigint 등이 있음

Number 타입의 경우 숫자가 아니라면 NaN 을 반환하며, 0.1 + 0.2 === 0.3 이 false 가 나는 등 소숫점 형태는 근사값을 가짐. (이유는 부동소수점을 이용하여 해당 정수를 2진법으로 바꿀때 정확하게 0.10000 이 아니기 때문에..)

null 과 undefined 의 차이도 알아보면 좋은데,
null 은 값이 없음을, undefined 는 값이 할당되지 않음을 뜻함.

객체 는 key : value 로 이로어 지는 컨테이너임
Object() 생성자를 이용하거나,

{
k:v,
k:v
}
와 같이 객체 리터럴을 사용하거나

new 와 같은 생성자 함수를 사용하는 방법이 있음

3.3 배열

배열은 순서가 있는 데이터의 집합으로 각 배열의 위치인 인덱스로 원소에 접근한다.
배열은 new Array 나 [] 리터럴을 이용해서 생성할 수 있고,
[1 , empty , 3] 와 같이 중간이 비어져 있는 배열을 희소 배열이라고 하며,

이런 희소배열은 forEach 나 map filter 와 같은 배열의 내장 메서드에서 무시된다.

하지만 find 같은 경우에는 무시되지 않는다

배열은
shift() => 배열 첫번째 원소 삭제후 반환
unshift() => 배열 앞에 원소 추가 후 배열의 길이 반환
push() => 마지막 배열 에 원소 추가하고 배열의 길이 반환
pop() => 마지막 인덱스 삭제 후 결과값 반환
splice() => 베열 데이터를 추가, 교체 혹은 삭제함.
sort() => 배열 정렬
concat() => 배열을 합쳐줌
slice() => 특정 범위의 배열을 복사해 배열 생성함.
단 얕은 복사를 수행하여, 배열중 객체의 경우 해당 객체는 참조가 됨

map() => 배열의 모든 원소를 받아 함수로 실행해서 함수 내에 있는 로직을 태운 뒤에 새로운 배열을 생성합니다.

forEach() => 모든 뭔소를 대상으로 실행

filter() => 함수의 테스트를 통과한 원소들로 새로운 배열로 만듦.

profile
개발도 잘하고픈 행복한 개발자

0개의 댓글