본문 바로가기

Computer Science/FAQ9

클로저란 무엇인가요? 클로저를 이해하기 위해선 스코프 체인, 렉시컬 환경에 대한 이해가 선행되어야 한다. 차근차근 이해해보자. 스코프 체인JavaScript에서 변수를 검색하는 메커니즘 JavaScript에서는 함수나 블록 내에서 특정 변수를 참조하고자 할 때 현재 스코프부터 상위 스코프로 해당 변수를 검색해나가는데, 이러한 과정을 스코프 체인이라고 한다. 예를 들어 아래와 같은 코드의 경우const globalColor = 'red'function func1() { const func1Color = 'blue' function func2() { const func2Color = 'green' console.log(func2Color) console.log(func1Color) console.log(.. 2025. 1. 2.
쿠키란 무엇인가요? 쿠키란 무엇일까?서버가 브라우저에 저장해두고 다시 받아오는 데이터, 또는 이러한 기술 이때 핵심은 데이터를 브라우저에 저장해둔다는 것인데 어차피 다시 받아올 데이터 그냥 서버에 저장해두면 될 것을, 왜 굳이 브라우저에 저장해두는 것일까? 쿠키를 왜 사용할까? 오늘날에는 서버 장비의 가격이 저렴하고 다양한 클라우드 서비스를 사용할 수 있지만 과거에는 그렇지 못했다. 예를 들어 사용자 한 명당 1KB의 데이터를 저장해두어야 한다고 할 때 사용자가 백 만 명만 되어도 1GB의 저장공간이 필요하게 되는데, 서버 장비의 가격이 비싸고 클라우드 서비스가 존재하지 않았던 과거에는 서버가 이를 오롯이 감당하기란 어려웠다. 이를 해결하기 위해 데이터 일부는 클라이언트가 저장하도록 하였는데, 이것이 곧 쿠키인 것이다. 이.. 2024. 11. 12.
기능이 제약된 웹 브라우저를 위해 웹 페이지를 어떻게 만드나요? 질문을 일반화해보면, 웹 브라우저마다 제공하는 기능이 다른데 모든 웹 브라우저에서 의도한 대로 작동하도록 하기 위해 어떤 방식으로 웹 페이지를 만드냐는 것이다. 과거에 비슷한 질문에 대해 공부한 적이 있다. 웹 브라우저 스펙 차이에 따른 스타일링 이슈는 어떻게 해결하나요? 위에서는 특히 스타일을 통일하기 위한 방법을 알아봤다면 이번에는 스타일뿐만 아니라 기능을 통일하기 위한 방법까지 알아보고자 한다. 크로스 브라우징최대한 많은 종류의 웹 브라우저에서 의도한 대로 작동하는 웹 페이지를 만드는 것 웹 페이지를 만들 때, 동일한 하나의 웹 페이지라도 웹 브라우저에 따라 다르게 보이고 작동하게 된다. 이는 웹 브라우저마다 사용하는 렌더링 엔진*이 다르기 때문인데, 웹 표준**을 준수함으로써 어느정도 해결할 수 .. 2024. 10. 29.
DOMContentLoaded 이벤트와 load 이벤트의 차이점은 무엇인가요? DOMContentLoaded 이벤트웹 브라우저가 HTML 문서를 전부 읽고 DOM 트리를 완성하면 발생하는 이벤트 DOMContentLoaded 이벤트는 이미지 파일, 스타일 시트 등 기타 자원의 로드를 기다리지 않고 DOM 트리만 완성되면 발생한다. 즉, DOMContentLoaded 이벤트 발생 시점에서 기타 자원은 로드되었을 수도, 되지 않았을 수도 있다.* DOMContentLoaded 이벤트는 document 객체에서 발생한다.  DOMContentLoaded 이벤트 발생 시점에서 아직 이미지는 로드되지 않았으므로 이미지 사이즈로 0x0을 출력한다. 실제로 alert 발생 시점에는 이미지가 존재하지 않는 것을 확인할 수 있다. * DOMContentLoaded 이벤트는 기타 자원의 로드를 기.. 2024. 10. 5.
웹 사이트의 에셋을 여러 도메인으로 서빙했을 때의 장점은 무엇인가요? 웹 사이트의 에셋을 여러 도메인으로 서빙하는 것을 도메인 샤딩이라고 한다. 도메인 샤딩브라우저가 웹 사이트의 에셋을 다운받을 때 해당 웹 사이트의 도메인으로부터 모든 에셋을 다운받지 않고 여러 개의 서브 도메인으로 에셋을 나눠 다운받는 방법 shard는 조각, 파편이라는 뜻으로 도메인 샤딩이라는 것은 곧 하나의 도메인을 여러 개의 도메인으로 조각낸다는 의미이다. 이때 굳이 하나의 도메인을 여러 개의 도메인으로 조각내는 이유는 하나의 도메인으로부터 모든 에셋을 다운받지 않고 여러 개의 서브 도메인으로 에셋을 나누어 다운받음으로써 동시에 더 많은 에셋을 병렬로 다운받을 수 있게끔 하고 결과적으로 페이지 로딩 속도와 시간을 향상시키기 위함이다. 이때 에셋이란 CSS, JavaScript, 폰트, 이미지 등의 .. 2024. 9. 30.
웹 브라우저 스펙 차이에 따른 스타일링 이슈는 어떻게 해결하나요? 웹 브라우저와 웹 표준 웹 브라우저란 웹 서버에서 이동하며 쌍방향으로 통신하고 HTML 문서나 파일을 출력하는 그래픽 사용자 인터페이스 기반의 응용 소프트웨어를 뜻한다. 웹 브라우저의 종류는 모질라 파이어폭스, 구글 크롬, 인터넷 익스플로러, 오페라, 사파리, 브레이브 등 아주 다양한데, 이러한 웹 브라우저들은 웹 브라우저의 종류에 따라, 버전에 따라 어떤 기능을 어떻게 지원하는지 전부 상이하기 때문에 웹 브라우저의 종류와 버전에 따라 동일한 사이트가 다르게 보이고 다르게 작동한다는 문제가 발생하게 된다. 이 문제를 해결하기 위해 제안된 것이 바로 웹 표준이다. 웹 표준이란 웹 브라우저의 종류 및 버전에 따른 기능 차이에도 호환이 가능하도록 제시된 표준으로, HTML, CSS, Javascript 등에 .. 2024. 9. 17.