FE/React

[React] S3 : Javascript 응용 (1)

ajeong7038 2023. 11. 4. 22:33

`한입 크기로 잘라 먹는 리액트 (React.js)` 강의를 듣고 정리한 자료입니다.

 

✨ 배열

- 비 원시 자료형

- 자료형에 영향을 받지 않는다

- 객체에서의 `키`와 다르게 `인덱스`로 접근이 가능하다

생성

let arr = new Array();
let arr = []; // 배열 리터럴

배열 관련 문법

push() // 가장 마지막에 원소 추가
length // 길이 반환

✨ 반복문

Object.keys(객체명) // key 값 반환
Object.values(객체명) // value 값 반환

✨ 배열 내장 함수

- for문이나 if문 간의 의존성을 줄일 수 있다

배열 순회

for (let i = 0; i < arr.length; i++) {
	console.log(arr[i]);
}
// 콜백 함수
arr.forEach((elm) => console.log(elm));
arr.forEach(function (elm) {
	console.log(elm);
});

map

- forEach와 비슷하지만 return이 가능함

// ex
diaryList.map((it) => (
  <div>일기 아이템 </div>
))

 

- 예시에 나온 `it`은 앞에서 선언하는 거 X

    -> 하나하나의 요소를 가리킴

- 예시, 1번과 2번은 똑같다

{/* div 3개가 있는 배열 */}
{diaryList.map((it) => {
  <div>일기 아이템 </div>;
})}

includes()

- `===`

- 인자와 같은 값이 존재하는지 boolean으로 return

indexOf()

- 전달 받은 인자와 일치하는 값의 인덱스 반환 (몇 번째 위치하는지 반환)

- 일치하지 않는 경우 -1 반환

findIndex(() => {})

- 가장 먼저 발견하는 인덱스 반환

- 중복 값에 주의할 것!

arr.findIndex((elm) => elm.color ==- "red");

find

- 조건에 일치하는 인덱스 값 그대로 반환

filter(() => {})

- 전달한 콜백 함수가 true인 모든 요소 반환 (배열)

slice(begin, end-1)

concat ( 갖다 붙일 배열)

sort() : 배열 정렬

- 원본 배열 정렬

- 사전 순이기 때문에 숫자를 정리할 때는 `비교 함수`를 만들어야 한다

- 클 때 뒤로 보내기 (1)

- 작을 때 앞으로 보내기 (-1)

- 같을 때 그대로 유지 (0)

join("구분자")

- 배열 내 모든 요소를 문자열 형태로 합침


✨ Truthy &Falsy

Truthy

1. Infinity

Falsy

1. null

2. undefinde // 변수에 아무것도 할당하지 않은 상태

3. 0

4. -0

5. NaN

6. 빈 문자열

 

- 예외 처리가 가능하다

- ex) !객체


✨ 삼항 연산자

- 조건식 ? true일 때 수행할 식 : false일 때 수행할 식;

- 값을 저장해서 사용해야 할 때도 있으니 주의할 것

- 중첩이 가능하다 (중첩 삼항 연산자)

    -> 중첩 사용 시 가독성이 떨어지므로 주의할 것

    -> 중첩은 되도록 피하자 (if문을 활용할 것)


✨ 단락회로 평가

- 왼쪽에서 오른쪽으로 연산하게 되는 논리 연산자의 순서를 이용하는 방법

- ex) 첫 번째 피연산자가 false이고 &&인 경우 뒤의 내용을 볼 필요도 없이 종료 (false)

- Truthy와 Falsy 속성과 함께 사용이 가능하다

return person && person.name; // 오류로 프로그램이 종료되지 않는다

✨ 조건문 업그레이드

if (["불고기", "떡볶이", "비빔밥"].includes(food)) {}

✨ 비 구조화 할당

- 배열의 기본 변수 비 구조화 할당

- 배열이나 JSON 객체 값을 변수에 효율적으로 할당하기 위해 사용

- 기본 값 지정 가능

- swap 활용 가능

- 변수명을 바꿀 때 `:` 활용

    -> ex) name: myName

let [one, two, three] = arr;
let [one, two, three] = ["one", "two", "three"];

✨ spread 연산자

- 중복된 프로퍼티를 줄여줄 수 있다

- ... 객체명

- 객체의 값을 새로운 객체에 펼침


✨ 동기&비동기

동기적 방식 (블로킹 방식)

- 자바스크립트는 코드가 작성된 순서대로 작업을 처리함

- 이전 작업이 진행 중일 때는 다음 작업을 수행하지 않고 기다림

- 먼저 작성된 코드를 먼저 다 실행하고 나서 뒤에 작성된 코드를 실행한다

- for문 또한 동기적 방식임을 기억할 것!

비동기적 방식(Asynchronous)

- MultiThread 방식의 작동

- 논 블로킹 방식

- 콜백 함수

- setTimeout() // 처리 방식 확인

function firstFunc(a, b, inFunc) {
  setTimeout(() => {
    const result = a + b;
    inFunc(result);
  }, 2000);
}
firstFunc(5, 5, (res) => console.log(res));
console.log("end");
----
function asyncAdd(a, b, cb) {
  setTimeout(() => {
    const res = a + b;
    cb(res);
  }, 3000);
}
asyncAdd(1, 3, (res) => {
  console.log("결과 : ", res);
});

✨ 참고 자료

- https://tech-monster.tistory.com/180