1️⃣ var 단점을 보완하기 위해서 let const가 나왔다고 하는데 그럼에도 불구하고 var를 쓰는 경우가 있는가??

var는 "함수레벨스코프" "의도치 않은 호이스팅" "의도치 않은 변수 재할당" 과 같은 단점이 있어 대체로 쓰지 않는 것을 권장한다. ES6부터 이러한 var의 단점을 보완한 키워드 let과 const가 나왔다. 그럼에도 var를 쓰게 되는 경우가 있다면 아래 3가지 상황 때문일 것이다. 1)오래된 브라우저와의 호환성을 지켜야 하는 상황 2)기존에 작성한 코드나 라이브러리가 var로 쓰여져있는 레거시 코드일 경우 3)함수레벨스코프가 특정 상황에 유용하게 쓰이는 경우(정말 흔치 않기에 역시 let과 const 권장)

2️⃣ var 키워드가 함수 레벨 스코프이기에 갖게 되는 단점(위험성)에 대해서 설명하시오.

함수 레벨 스코프와 블록 레벨 스코프는 변수의 범위 제한에서 차이가 있다. 함수레벨스코프에서의 변수의 유효범위는 함수 내 "{ ... }" 영역까지이며 블록레벨스코프에서의 변수의 유효범위는 해당 블록의 "{ ... }" 영역까지이다. 뭐야 똑같은거 아니야??라고 생각할 수 있겠지만 만약 함수가 굉장히 길어지는 것을 생각해보면 블록 레벨 스코프가 안정성과(변수의 유효범위가 충돌할 확률이 적어짐) 유지보수성 측면에서 훨씬 유용함을 알 수 있다.

3️⃣ "var 스코프를 사용함으로써 얻는 위험성"이라는 말은 다소 추상적이다. 실제 상황을 예시로 들어 설명한다면??

앞서 (2)번에서 설명하였다. var로 a를 선언했는데 그 뒤에 100줄 이상의 코드를 작성했다고 가정해보자. 더구나 몇 달전에 작성한 코드를 당장 유지보수 해야 하는 상황이다. 과연 a라는 변수가 있었는지 없었는지 기억할 수 있을까? 이와 같은 상황에서 재할당이 가능한 var로 a를 선언했다면 분명 예기치 못한 문제가 발생할 가능성이 크다.

4️⃣ 선언과 할당의 차이점에 대해서 최대한 구체적으로 설명하라.

변수 선언은 컴퓨터에게 해당 이름을 사용하여 데이터를 저장할 수 있는 공간을 마련해달라고 요청하는 것이며, 할당은 그러한 공간에 실제 값을 넣는 행위이다. 할당을 통해 실제 데이터 값이 저장되고 그 값을 사용할 수 있게 되는 것이다.

5️⃣ 가비지 콜렉터는 실제 어디에 있는가??(자바스크립트를 예시로 설명하라.)

V8 엔진, SpiderMonkey, JavaScriptCore와 같은 자바스크립트 엔진에 있다. 자바스크립트 엔진은 웹브라우저나 Node.js와 같은 실행환경 안에 내포되어 있다. 엔진은 자바스크립트 코드를 실행하기 위한 핵심 역할을 수행하며, 코드의 파싱, 컴파일, 실행 등을 처리한다.

profile
Whether you're doing well or not, just keep going👨🏻‍💻🔥

0개의 댓글