Community

- 웹은 완전하지 않으며 덧대가며 발전하는 중입니다. 어쩌다가 '자바스크립트의 호이스팅에 관해 설명하시오' 라는 질문이 기술면접 질문이 되면서 호이스팅에 관해 묻거나 이해가 되지 않는다거나 열띤

- 웹은 완전하지 않으며 덧대가며 발전하는 중입니다. 어쩌다가 '자바스크립트의 호이스팅에 관해 설명하시오' 라는 질문이 기술면접 질문이 되면서 호이스팅에 관해 묻거나 이해가 되지 않는다거나 열띤 논의를 하며 정의를 외우거나 설명을 하는 상황을 종종 목격을 하게 됩니다 하지만 호이스팅은 단순히 자바스크립트에서 function을 선언하기 전에 호출을 해도 가능하도록 하는 것이며 당시 Java와 같은 언어에서 변수와 로직은 상단에 함수부는 하단에 적는 관습으로 부터 나온 설계이며 이로 인해 스크립트 언어지만 스크립트 해석을 끝 까지 전부 다 해서 function 선언부부터 먼저 실행을 시키게 하고 나머지를 실행시키도록 만드는 좋지 않는 설계의 일부분일 뿐입니다. (나중에 생긴 class의 경우에는 호이스팅이 없습니다.) 자바스크립트는 10일만에 설계되어 탄생한 언어이고 모든 것이 잘 설계된 채로 시작한 언어가 아니며 지금처럼 가장 많이 쓰는 언어가 될거라고 기대하고 만든 언어도 아니었습니다. 웹 브라우저에 대안이 없는 언어이고 웹의 특성상 하위 호환성을 위해서 이미 출시된 표준을 갈아 엎지 않고 계속 덧대면서 발전하고 있는 언어입니다. (CSS도 마찬가지입니다.) 초창기 자바스크립트 구루인 더글락스 크릭포드에 이에 대해 신랄하게 비판하며 자바스크립트는 몇가지 좋은 설계와 나머지 형편없는 설계로 만들어져 있기 때문에 좋은 점만 찾아서 골라서 써야 한다며 Lint를 만들었고 이는 우리가 지금 쓰고 있는 ESLint의 원형이 되었고 아시다시피 ESLint는 하지 말아야 하는 것 투성이입니다. javascript: Goog parts에서 읽었던 내용을 바탕으로 마무리를 해볼까합니다. (발췌가 아닌 재해석입니다.) "웹 뿐만 아니라 모든 것의 설계가 다 좋을 순 없기에 모든 것을 다 익혀서 골고루 잘 써야 한다는 생각은 좋지 못합니다. 우리는 이 중에서 좋은 것만 골라내어 쓸 줄 알아야 하며 이는 오히려 더 좋은 습관입니다. 특히 웹은 이미 발표된 표준을 뒤로 돌릴 수 없기에 더더욱 그러합니다."

알림

알림이 없습니다