var: 중복 선언 허용됩니다. 동일한 변수명으로 여러 번 선언해도 오류가 없고, 마지막 선언이 기존 값을 덮어씁니다.
let: 중복 선언을 허용하지 않습니다. 동일한 변수명으로 여러 번 선언하면 오류가 발생합니다.
const: 중복 선언을 허용하지 않습니다. const로 선언한 변수는 재할당이 불가능하며, 동일한 변수명으로 다시 선언하면 오류가 발생합니다.
var: 함수 스코프를 가집니다. 함수 내에서 선언된 변수는 함수 내에서만 유효합니다.
let 및 const: 블록 스코프를 가집니다. 중괄호 {} 내에서 선언된 변수는 해당 블록 내에서만 유효합니다.
var: 호이스팅이 발생합니다. 변수 선언은 코드의 맨 위로 끌어올려집니다. 초기화되지 않은 변수는 undefined 값이 할당됩니다.
let 및 const: 호이스팅이 발생하지만, 초기화되지 않은 변수는 undefined 대신 "TDZ (Temporal Dead Zone)"에 빠집니다. 이후 변수를 초기화하기 전까지 사용하면 오류가 발생합니다.
브라우저는 웹페이지를 렌더링하고 실행하는 환경으로, HTML, CSS 및 JavaScript 코드를 처리합니다. 다음은 브라우저의 주요 동작 단계입니다:
브라우저는 서버에서 받은 HTML, CSS 및 JavaScript 파일을 파싱하여 문서 객체 모델(DOM) 및 CSS 객체 모델(CSSOM)을 생성합니다.
DOM과 CSSOM을 결합하여 렌더 트리를 생성합니다. 이 트리는 화면에 표시되는 요소의 계층 구조를 나타냅니다.
렌더 트리를 기반으로 각 요소의 레이아웃을 계산합니다. 이 과정은 요소의 크기, 위치, 박스 모델 및 흐름을 결정합니다.
브라우저는 레이아웃 정보를 사용하여 화면에 컨텐츠를 렌더링하고 표시합니다.
HTML 파싱 중 JavaScript 코드를 만나면 실행합니다. 이때, var, let, const의 스코프 및 호이스팅 규칙에 따라 변수를 처리합니다.
브라우저는 사용자 상호작용(클릭, 입력 등)을 감지하고, JavaScript 코드로 이벤트 핸들러를 실행합니다.
브라우저는 이미지, 스타일시트 및 기타 리소스를 비동기적으로 요청하고 로드합니다.
변경된 내용이나 상호작용에 따라 화면을 다시 그립니다.
이러한 단계를 통해 브라우저는 웹페이지를 표시하고 상호작용을 처리합니다. JavaScript의 변수 선언 및 사용은 이 프로세스 중 하나로, 스코프 및 호이스팅 규칙에 따라 실행됩니다.