시맨틱(Sementic)-정의: 의미의,의미론적인
< div >는 'Division'의 약자로, 특별한 의미 없이 콘텐츠를 묶거나 레이아웃을 나눌 때 사용하는 범용적인 컨테이너이다.

장점:
무한한 범용성과 유연성: 태그 자체에 의미가 없기 때문에, CSS로 디자인을 입히기 위한 단순한 요소들을 그룹화하는 용도로 어디에나 부담 없이 사용할 수 있다.
백지상태의 스타일: 브라우저가 기본적으로 부여하는 특별한 의미나 기본 스타일이 없어서,
개발자가 의도한 대로 CSS 레이아웃을 순수하게 구현하기에 가장 편하다.
빠른 레이아웃 구성: 의미론적 구조를 깊게 고민할 필요 없이, 빠르게 화면의 영역을 분할하고 뼈대를 잡을 때 유용하다.
단점:
의미의 부재: 태그 이름만으로는 그 안에 어떤 내용이 들어있는지(메뉴인지, 본문인지 등) 전혀 파악할 수 없다.
Div Soup (코드 복잡도 증가): 복잡한 레이아웃을 짤 때 < div > 안에 < div >가 무한정 중첩되면, 코드를 읽고 유지보수하기가 매우 힘들어진다.
SEO 및 접근성 취약: 검색 엔진이나 스크린 리더 기기가 페이지 내에서 무엇이 중요한 핵심 콘텐츠인지 식별하는 데 도움을 주지 못한다.
< header >, < main >, < article >, < nav > 등 이름 자체에 뚜렷한 의미와 역할을 담고 있는 태그이다.
장점:
검색 엔진 최적화: 검색 엔진이 웹 문서의 구조를 쉽게 파악하여 중요한 콘텐츠를 우선적으로 수집하고 검색 결과에 반영할 수 있도록 돕는다.
웹 접근성 향상: 시각 장애인용 스크린 리더 등의 보조 기기가 문서의 주요 영역을 인식하고 건너뛰기 기능을 제공하는 등 탐색에 결정적인 역할을 합니다.
높은 코드 가독성: < header >, < footer > 등 태그 이름만으로도 레이아웃의 역할을 즉각적으로 알 수 있어, 개발자 간의 협업과 추후 유지보수가 훨씬 수월해집니다.
단점:
잘못 사용 시 부작용: 의미에 맞지 않는 시맨틱 태그를 남용하거나 오용하면, 오히려 스크린 리더가 사용자에게 잘못된 정보를 전달하거나 검색 엔진 로봇에 혼란을 줄 수 있다.
기본 스타일 존재: 일부 시맨틱 태그나 관련 요소들은 브라우저에 따라 기본적인 여백이 적용되어 있을 수 있기 때문에, CSS 초기화 작업에 신경을 써야 할 때가 있다.
let: 내용물을 언제든지 다른 것으로 바꿀 수 있는 상자이다.
const: 한 번 내용물을 넣으면 테이프로 밀봉해서 절대 바꿀 수 없는 상자이다.


코드를 수십, 수백 번 똑같이 쳐야 할 때 사용하는 문법이다.
for (횟수가 정해져 있을 때): "딱 5번만 점프해!"처럼 반복할 횟수가 명확할 때 쓰인다.
while (조건이 중요할 때): "배가 부를 때까지 계속 먹어!"처럼 특정 조건이 끝날 때까지 무한정 반복할 때 쓰인다.




JS에서 DOM 조작을 이해하는 가장 쉬운 방법은 웹 페이지(HTML)를 '집'이라고 생각하고, 그 안에 있는 요소들(버튼, 텍스트, 이미지 등)을 '가구'라고 상상하는 것이다.
DOM 조작이란 결국 집 안에서 원하는 가구를 찾아내서, 색깔이나 위치를 바꾸는 과정이다.

특징: HTML에 부여된 고유한 id 값으로 요소를 단 하나만 정확하게 찾는다.
비유: "주민등록번호가 123456인 사람 찾아와!" (세상에 하나뿐이므로 가장 빠르고 확실한 방법)
비유: "빨간색 티셔츠(class) 입은 사람들 다 모여!

특징: CSS에서 스타일을 줄 때 사용하는 문법(.클래스, #아이디, 태그명)을 그대로 사용해서 요소를 찾는다. 아주 유연하고 편리해서 현대 자바스크립트에서 가장 널리 쓰인다.
주의점: 조건에 맞는 요소가 여러 개 있어도 무조건 맨 처음에 발견된 1개만 가져온다.(모두 찾으려면 querySelectorAll을 사용한다.)



