웹 컴포넌트 생성 주기에 대해 학습하고 리팩토링 하며 활용했다.
특히 template, observer와 attributeChangedCallback 사용의 버그를 드디어 찾아내서 기쁘다!(정말 별거 아닌 버그 ㅋㅋ)
멘토링에서 가고싶은 기업 공고 분석으로 라인프렌즈를 선택해 2022년 상반기 웹 프론트엔드 직무 신입 공고를 선택했다.
- 컴퓨터 과학의 기초 지식(자료구조/알고리즘/데이터베이스/네트워크/운영 체제 등)을 이해하고 활용할 수 있는 분
- JavaScript, HTML, CSS를 다루며 관련 내부 동작 원리에 대한 관심이 있는 분
- git을 이용한 코드 현상 관리와 코드 리뷰 경험이 있는 분
느낀점 : 전공 공부 열심히하고 컴퓨터적 사고력을 지닌 사람을 원한다. (자료구조, 운영체제 등..🤣)
비록 나는 신입 공채 공고라 자격 요건이 굉장히 포괄적이었지만, 다른 분들은 1~3년차의 프론트엔드 개발자 모집 공고를 가지고 오셨다. 그러다 보니 처음보는 기술, 분야가 많았는데 루크가 하나하나 설명해주셨다.
느낀 점은, 신입은 신입다운 사람을 뽑는 다는 것! 하지만 요새 신입 공고가 가뭄에 콩나듯 있다는 것..😭😭😭
내가 지금 할 수 있는 최고의 선택은 JS를 깊게 공부하고, 동작 원리를 이해하며, 운영체제 등의 컴퓨터 싸이언스를 틈틈히 정리하되 알고리즘 매일 풀기. ㅋㅋㅋㅋ
앞으로 프로젝트를 하면서 동작원리를 깊게 파보자! 리팩토링 -> 성능 최적화 및 테스트를 하는 것을 목표로 세우자
즉, 되돌아와서 호출하는 함수라는 뜻이다.
두가지의 중 하나라도 충족을 하면 콜백함수이다.
따라서 비동기함수에서 사용된다고 해서 콜백함수인 것이 아니라, 파라미터로써 이용되기 때문에 콜백함수인 것이다.
동기적으로 실행되는 콜백함수의 예
function one(value){
console.log(value);
};
function two(callback){
const value = 'callback test';
callback(value);
};
two(one);
two 함수에 one 함수를 인자로 전달해 내부에서 값을 전달해 호출한다. 따라서 one은 콜백이다.
비동기적으로 실행되는 콜백함수의 예
document.queryselector("#callback-btn")
.addEventListener("click", function() {
console.log("User has clicked on the button!");});
이 코드에서 click event가 발생하면, console.log() 메시지가 출력된다. 따라서 콜백함수는 console.log이다.
따라서 map 메소드(배열 메소드)에도 콜백함수가 사용된다.
let arr = [3, 4, 5, 6];
let modifiedArr = arr.map((element)=>
return element *3;
});
console.log(modifiedArr); // [9, 12, 15, 18]
이 코드에서 map 메소드의 파라미터로 익명함수가 들어있다. 따라서 이 익명함수는 콜백이다. 이 첫번째 아규먼트로 전달하는 콜백함수가 매번 return값을 모아 새로운 배열을 만들어 return 한다.
let options = {
size: {
width: 100,
height: 200
},
items: ["Cake", "Donut"],
extra: true
}
let {
size: { // size는 여기,
width,
height
},
items: [item1, item2], // items는 여기에 할당함
title = "Menu" // 분해하려는 객체에 title 프로퍼티가 없으므로 기본값을 사용함
} = options
이때, size나 items의 경우 전용 변수가 없다. 전용 변수 대신에 size와 items 안의 정보를 변수에 할당한 것!!
따라서 console.log(size)
나 console.log(items)
를 하면 reference error가 발생한다.
클래스에 딸려있는 메소드라 클래스가 인스턴스화가 되면 호출할 수 없다.
class StaticMethodCall {
constructor() {
console.log(StaticMethodCall.staticMethod());
console.log(this.constructor.staticMethod());
}
static staticMethod() {
return '나 불라짐~';
}
}
const eva = new StaticMethodCall()
console.log(eva.constructor.staticMethod()) // 가능
분할정복 (Divide and Conquer)
퀵 정렬
병합정렬
trapping rain 문제에서 상당한 시간이 걸렸다. 브루트포스로 풀었는데, DP 풀이가 있지만 아직 이해를 못했다..😭
observer Camel → 소문자로 변경
처음에는 observer로 isStarred
attirbute를 관찰하고 있어도 attributeChangedCallback
이 실행되지 않았다. 이에 대해 팀원들과 코드를 분석해보았는데, 관찰 대상을 camelCase로 작성했는데, html의 속성으로 파싱이 되는 순간 attribute 명은 다 소문자로 바뀐다는 것을 알게 되었다.
isStarred
→ isstarred
로 바꿨더니 해결 ㅋㅋ ... 그 오랜 삽질을 이런 변수명 하나로..해결해서 기쁘다^^