JS #2 Syntax (2) - array, callback, event loop

황은하·2021년 9월 16일
0

JS

목록 보기
2/19

⭐ Callback

함수 안에 매개변수로 함수를 넣을 수 있다.
매개변수 자리에 함수를 넣을 수도 있다.
변수로 함수를 보내기는 하지만, 해당 함수를 호출해야만 실행된다.

많이 쓰이니까 익숙해져야해~~
function repeater(sayHello) {
  sayHello()
  sayHello()
  sayHello()
}

function sayHello() {
  console.log('hello world!')
}

repeater(sayHello)

filter

: 배열에서 해당 조건을 만족하는 요소들을 모아 배열로 만든다.
* arrow function -> {} 를 사용하면 return이 있어야 한다. return이 없다면 해당 코드가 반환된다.

const result = words.filter((word) => word.length > 6);

find

: 배열에서 해당 조건을 만족하는 첫 번째 요소를 찾는다.

const found = array1.find(element => element > 10);

sort

문자는 알파벳 순으로 정렬되지만, 숫자는 맨 앞의 숫자만으로 정렬이 된다. 그래서 숫자 자체로 정렬을 하려면 추가로 적어줘야 한다.

  • 오름차순 : .sort((a, b) -> a - b)
  • 내림차순 : .sort((a, b) -> b - a)

spread and rest

spread

...을 사용하여 해당 요소들을 모두 가져온다.

rest

맨 끝을 나타낼 때 ...rest로 사용한다.
spread와 붙어서 함께 사용한다.

const myName = ["Marina", "Magdy", "Shafiq"];
const [firstName, ...yolo] = myName;
console.log(firstName, yolo);

destructoring

객체를 뒤집는다. 보통은 객체가 있고, 거기에 해당되는 변수들이 있는데, 여기서는 변수부터 나열하고 객체를 할당한다.
그러면 필요한 요소를 더 간단하게 부를 수 있다.

const obj = {
  me: "Eunha",
  you: "Momo",
  we: "Algo Champion",
};

const { me, you, we } = obj;

console.log(me);	// Eunha

⭐ event loop

  • Java -> multi threading
  • JavaScript -> single threading (위에서 아래로 내려가면서 코드 읽는다.)

(js -> node js -> google engine v8)

single threading
-> 한번에 하나의 코드가 실행된다. 하나가 끝나야 다른 하나를 시작한다.
=> 하나의 코드가 실행하는데 오래 걸리면, 다음 코드를 실행하려면 오래 기다려야 한다.
그래서 이렇게 오래걸려서 실행되지 않을 것 같은 코드를 Web Api로 넘겨서 실행하게 한다. 해당 코드가 끝나면 callback queue로 넣고 event loop이 6ms 마다 돌면서 queue를 확인한다. 끝나는게 있으면 이전의 stack으로 가져온다.

Event Loop Visualisation

setTimeOut() 이 async 함수다. -> web api로 넘어감.

이렇게 정해지지 않은 함수를 web api로 넘기려면 async function 으로 만들면 된다.

profile
차근차근 하나씩

0개의 댓글