전체 글 (107) 썸네일형 리스트형 깊은 복사와 얕은 복사에 대해 설명해주세요. 깊은 복사와 얕은 복사는 객체나 배열을 복사할 때 그 복사의 깊이에 따라 구분되는 개념입니다.얕은 복사는 객체의 최상위 레벨 프로퍼티들만 복사하는 방법입니다. 즉, 객체 내부에 또 다른 객체나 배열이 있을 경우, 그 내부 객체의 참조값만 복사됩니다. 이로 인해 복사된 객체와 원본 객체는 동일한 내부 객체를 참조하게 되어, 한쪽에서 내부 객체를 수정하면 다른 쪽에도 영향을 미치게 됩니다.반면에, 깊은 복사는 객체의 모든 계층의 프로퍼티들을 재귀적으로 복사하여 완전히 새로운 객체를 생성하는 방법입니다. 따라서 복사된 객체와 원본 객체는 완전히 독립적인 상태가 되며, 한쪽을 수정해도 다른 쪽에 영향을 주지 않습니다.예를 들어, JavaScript에서 얕은 복사는 Object.assign()이나 전개 연산자(... this에 대해 설명해주세요. this는 현재 실행 컨텍스트에서의 객체 참조를 나타냅니다. 즉, 함수가 호출될 때 결정되는 객체를 가리키며, 함수가 어떻게 호출되었는지에 따라 'this'의 값이 달라집니다.1. 전역 컨텍스트에서의 this전역 영역에서의 'this'는 브라우저 환경에서는 window 객체를, Node.js 환경에서는 global 객체를 참조합니다.console.log(this); // window 객체를 출력2. 함수 호출에서의 this일반 함수에서 'this'는 기본적으로 전역 객체를 가리킵니다. 하지만 **엄격 모드(strict mode)**에서는 undefined가 됩니다.function showThis() { console.log(this);}showThis(); // window 객체를 출력 (엄격 모드에서.. 호이스팅에 대해 설명해주세요 호이스팅(Hoisting)은 자바스크립트에서 변수와 함수의 선언이 해당 스코프의 최상단으로 끌어올려지는 현상을 말합니다. 이는 코드의 작성 순서와는 관계없이 자바스크립트 엔진이 실행 시점에 선언부를 먼저 처리하기 때문에 발생합니다. 예를 들어, var 키워드로 변수를 선언하면 호이스팅이 발생하여 변수 선언이 코드의 최상단으로 이동합니다. 하지만 변수의 할당은 원래 위치에 남아 있기 때문에, 선언 전에 변수를 참조하면 undefined를 반환합니다.console.log(a); // undefinedvar a = 5;위 코드에서 a는 호이스팅으로 인해 선언부가 위로 올라가지만, 값이 할당되기 전이므로 undefined가 출력됩니다.반면에 let과 const로 선언한 변수는 호이스팅이 되지만, Tempora.. var, let, const 차이를 설명해주세요 답변var, let, const는 자바스크립트에서 변수를 할당할 때 사용하는 키워드입니다.먼저 var는 함수 스코프를 따르고, 블록 스코프를 무시하고 호이스팅이 발생해 변수 선언 전 접근 시 undefined가 반환됩니다. 또한 변수 재할당이 가능합니다.let은 블록 스코프를 따르며, 호이스팅이 되지만 선언 전 접근 시 ReferenceError가 발생합니다.let 역시 재할당이 가능합니다.const도 블록 스코프를 따르며, 호이스팅이 되지만 선언 전 접근 시ReferenceError가 발생합니다. 또한 const는 재할당이 불가능합니다.다만 객체나 배열의 내부 값은 변경할 수 있습니다. 꼬리 질문var가 블록 스코프를 무시할 때 발생할 수 있는 실제 문제는 무엇인가요?var는 함수 스코프를 따르기 때문.. async, await 사용방법을 설명해주세요. 답변async, await 방식을 Promise 기반 코드를 동기식 코드처럼 작성할 수 있도록 해줍니다.async는 함수가 비동기 함수임을 선언한 것이고, await는 해당 비동기 작업이 완료될 때까지 기다린다는 의미입니다.함수 앞에 async를 선언하면 해당 함수는 Promise 객체를 반환한다는 의미이고, 내부적으로 Promise를 반환하는 작업 앞에 await를 붙여 해당 작업이 완료될 때까지 기다리도록 하여 마치 동기적인 코드처럼 사용할 수 있습니다.꼬리 질문async/await와 Promise.then()은 언제 사용하는 게 더 적합한가요? 답변async/await는 비동기 코드들을 순차적으로 실행할 때 더 적합합니다.비동기 코드를 동기 코드처럼 사용할 수 있어 흐름을 파악하기에 유리합니다.반면.. Promise와 Callback의 차이점을 설명해주세요 답변Callback은 함수 실행 후 다시 호출되는 함수로, 비동기 작업 완료시 호출될 수 있습니다.하지만 중첩될 경우 Callback Hell 문제를 일으킬 수 있습니다.Promise는 비동기 작업의 성공, 실패를 처리하는 객체로, Callback보다 가독성이 좋고 체인형식으로 작업을 이어나갈 수 있습니다.then, catch, finally를 사용해 비동기 작업의 흐름을 제어할 수 있습니다. 꼬리 질문Callback Hell이란 무엇인가요?이에 대한 해결책으로 앞서 말한 Promise나 async/await 방법들을 사용할 수 있습니다.Callback Hell은 비동기 작업을 처리할 때, 여러 개의 중첩된 콜백 함수들이 순차적으로 호출되는 구조를 말합니다. 이로 인해 코드의 가독성이 떨어져, 유지보수나.. 애니메이션 최적화 이전 프로젝트에서 3D 애니메이션 렌더링 최적화 때문에 애먹은 적이 있었다..그런데 테코톡에서 애니메이션 최적화와 관련된 부분이 올라와서 정리해볼까 한다.참고 링크브라우저의 렌더링 과정파싱 단계HTML 파일을 파싱하여 DOM 트리를 생성한다.CSS 파일ㅇ르 파싱하여 CSSOM 트리를 생성한다.DOM과 CSSOM을 결합하여 렌더 트리를 생성한다.Layout 단계각 요소의 크기와 위치를 계산한다.각 요소를 벡터 박스로 표현하여 배치한다.- 리플로우 : 요소의 크기나 위치를 계산 또는 변경할 경우리플로우가 발생하면 브라우저는 파싱 단계부터 브라우저가 렌더링되는 모든 단계를 다시 수행하야하기 때문에 상당히 큰 작업이다.Paint 단계레이아웃 벡터 박스들을 레스트화 한다.화면을 어떻게 그릴지에 대한 페인트 레코드.. 프론트엔드 성능 측정 참고자료 : 테코톡 프론트엔드 성능 측정프론트엔드에서 성능이란?웹 화면을 구현하고 서버로부터 데이터를 받아오는 과정에서 리소스들을 사용자들에게 빠르게 보여줄 수 있는 것성능 == 속도그렇다면 프론트엔드에서 성능은 왜 중요할까?성능이 중요한 이유웹 성능 측정의 기준은?동일한 사이트더라도 사용자의 환경은 모두 다를 수 있음따라서 속도는 상대적인 개념임사용자 정의 지표처음 그려지는 화면이 어떤 화면인지, 어떤게 사용자에게 의미있는 화면인지, 상호작용하는 시점은 언제인지와 같은 고민을 통해 보다 다양한 사용자 환경에서 성능을 측정한다.따라서 사용자 정의 지표가 제공하는 특징들을 이해한 다음 사용자 경험에 중요한 부분들을 설정하는 것이 중요성능 측정 지표Core Web Vitals : 구글에서 만든 신뢰성 있는 .. 이전 1 2 3 4 5 6 ··· 14 다음