2차_1주차_이서연_회고록 - hyeone999/Docs-JS_deepDive_Study GitHub Wiki
[15장]let,const 키워드와 블록 레벨 스코프
var 키워드
1) 변수 중복 선언 허용
var x = 1;
var x = 2;
console.log(x); // 2
var y = 1;
var y; // 무시됨
console.log(y); // 1
2) 함수 레벨 스코프
- 함수 내부 선언 : 지역변수 간주
- 함수 외부 선언 : 전역변수 간주
- 함수 내부에 선언된 변수만 지역 변수로 간주하며 그 외의 나머지는 모두 전역변수로 간주
3) 변수 호이스팅
호이스팅 = 선언한 변수 및 함수가 코드 최상단으로 올라오는 것을 의미
let 키워드
1) 변수 중복 선언 금지
let bar = 123;
let bar = 456;
// SyntaxError: Identifier 'bar' has already been declared
재할당은 가능하나 var키워드와 다르게 중복 선언 시 에러가 뜸
2) 블록 레벨 스코프
let foo = 1; // 전역 변수
{
let foo = 2; // 지역 변수
let bar = 3; // 지역 변수
}
console.log(foo); // 1
console.log(bar); // ReferenceError: bar is not defined
지역변수는 전역에서 참조 불가
3) 변수 호이스팅
- 변수 선언문 이전에 참조하면 ReferenceError가 발생
- 선언단계 초기화 단계(변수 선언문) 분리되어 진행
- 일시적 사각지대 = 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간 = 변수 호이스팅이 발생하지 않는 것처럼 보임.
const 키워드
1) 선언과 초기화
- 선언과 동시에 초기화
- 변수 호이스팅이 발생하지 않는 것처럼 동작
2) 재할당 금지
선언된 변수의 재할당을 금지했으나 불변은 아님
3) 상수
원시 값처럼 할당된 값을 변경할 수 없음
4) 객체
재할당 없이 직접 객체 변경 가능 -> 이때, 참조 값은 변하지 않음.
회고
처음 시작했던 스터디인 만큼 블로그를 어떤식으로 쓰는게 좋을지를 몰라 애 좀 먹었다. 덕분에 다른 사람들의 블로그도 많이 찾아보고 개념에 대해서도 자세하게 공부할 수 있는 시간이 되었다. 앞으로도 자스를 더 능수능란하게 사용할 수 있도록 노력해야겠다.
27장 배열
배열
- 배열은 순서 있는 요소의 집합
- 각 요소는 인덱스를 통해 접근 가능 (0부터 시작)
- 배열은 객체이며, length 프로퍼티를 가짐
배열의 종류
- 밀집 배열 (Dense Array): 연속된 인덱스를 가짐
- 희소 배열 (Sparse Array): 일부 인덱스가 비어 있음 (undefined 아님)
배열 생성 방법
// 배열 리터럴
const arr = [1, 2, 3];
// Array 생성자
const arr1 = new Array(3); // 길이 3 빈 배열
const arr2 = new Array(1, 2, 3); // [1, 2, 3]
// Array.of
const arr3 = Array.of(3); // [3]
// Array.from
const arr4 = Array.from('hi'); // ['h', 'i']
배열 요소 접근 및 조작
- 인덱스로 요소 접근:
arr[0]
- 요소 추가:
arr[3] = 4
- 요소 삭제:
delete arr[1]
(희소 배열 주의) - 요소 제거 및 재정렬:
arr.splice(1, 1)
배열 메서드
변경 메서드 (원본 배열 변경)
push, pop, shift, unshift, splice, reverse, fill
비변경 메서드 (새 배열 반환)
concat, slice, join, flat
검색 관련
indexOf, includes
타입 확인
Array.isArray(value)
배열 고차 함수
forEach
: 콜백 함수 실행
map
: 변형하여 새 배열
filter
: 조건 만족 요소만 새 배열로 반환
reduce
: 누적 계산 -> 배열을 하나의 값으로 줄임
some
: 하나라도 조건 만족
every
: 모두 조건 만족
find
: 조건 만족 첫 요소 반환
findIndex
: 조건 만족 첫 인덱스 반환
flatMap
: map 후 flat 수행
회고
솔직히 이해하기 너무 어려웠다!!! 이해할 것도 많고 상황에 따라서 사용하는 것이 달라지다 보니 고차함수에 대해서 깊게 이해할 필요성을 느꼈다...앞으로는 좀 더 시간을 길게 잡고 깊게 공부를 하는 것이 좋을 거 같다.