어리석은 자바 스크립트 인터뷰 질문
나는 기술적인 질문에 직접적으로 반대하지 않습니다. 후보자의 기술 능력에 대한 아이디어를 얻는 방법 중 하나라고 생각합니다. 엄격한 기술 인터뷰보다 기술 토론을 선호합니다. 하지만 오늘날 Javascript에 대한 최악의 질문 중 하나와 그 이유를 설명하겠습니다.
요점을 설명하기 전에 Javascript의 역사를 조금 파헤쳐 보겠습니다.
1995년 에 Netscape(Brendan Eich)가 개발했으며 나중에 Mozilla는 자바스크립트를 계속 개선하고 개발했습니다. javascript의 기본 아이디어는 온라인 세계를 탐색할 때 일종의 역학을 만드는 것이었습니다. 일부 경고 또는 매우 기본적인 애니메이션에 사용되었습니다. Javascript는 Java의 모양과 느낌을 가지도록 설계되었지만 프로그래머가 아닌 사용자가 작업하기 더 쉽습니다. 그 당시에는 AJAX도 없었습니다. -> Javascript는 요청 등에 사용되지 않았습니다.
1997년경 Javascript는 ECMA 표준의 일부가 되었습니다.
2005년에 우리는 AJAX의 첫 번째 공식 릴리스를 가졌습니다 -> 이것이 오늘날의 웹 개발이 시작된 지점입니다. 더 이상 데이터를 다시 로드하기 위해 페이지를 새로 고칠 필요가 없습니다. 갑자기 어떤 종류의 웹 앱을 만들 수 있다고 상상해 보십시오. 그러나 문제는 Javascript가 이에 대한 준비가 되었습니까? 글쎄,별로. 개발자들은 IIFEE 와 같은 것을 사용하는 데 빠르게 익숙해졌습니다 .
(function() {
// Code that runs in your function
var name = 'John Doe'
}
)()
console.log(name) // error as the name is not defined in this scope
IIFEE 는 기본적으로 오늘날의 관점에서 더 많은 .js 파일로 복잡한 앱을 만들 수 있는 해키 솔루션이었습니다. 그렇지 않으면 변수 , 함수 등 의 이름 지정 에서 충돌이 발생할 수 있기 때문에 이러한 종류의 솔루션이 필요했습니다 . Javascript는 클래스가 없는 엄격한 기능적 언어였기 때문입니다.
VAR 및 Hoisting -> Hoisting은 선언을 맨 위로 이동하는 동작입니다. 그리고 javascript에서 변수는 선언되기 전에 사용할 수 있습니다. 이것은 유효한 시나리오입니다.
myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?
이 예에서 변수 myVariable은 맨 위로 이동되고 동시에 초기화되었습니다. 이것이 3행에서 변수가 이미 문자열을 저장하는 이유입니다.
그리고 그런 일과 문제가 훨씬 더 많았습니다. 여기에서 찾을 수 있는 자바스크립트의 이상한 부분을 잊지 마세요.https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8
하지만 버전 es6에서 Javascript로 변경된 사항이 있습니다.
새로운 접근 방식으로 호이스팅 예제로 돌아가면 다음과 같습니다.
myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined
Javascript는 여전히 변수 선언을 맨 위에 두지만 초기화는 하지 않습니다. 따라서 콘솔은 문자열 대신 정의되지 않은 변수를 작성합니다.
버전 es6 외에도 다음이 있습니다.
- 화살표 기능
- 클래스
- 모듈
- 약속
- 발전기
- 변수에 대한 let 및 const 선언
- 확산 및 나머지 연산자
- 템플릿 리터럴
- 파괴
- 그리고 훨씬 더
그러면 잘못된 면접 질문은 무엇입니까?
내 요점을 그리기 시작하기 전에 그러한 예 중 적어도 일부를 보여주는 것이 필요했습니다.
당신이 새로운 개발자이고 Javascript를 배우기 시작했다고 상상해보십시오. 다음을 이해하는 것은 실제로 필요하지 않습니다.
- 바르
- IIFEE
- 폐쇄
- Promise와 그 사용법(하지만 알아두면 좋습니다)
그러나 이전 버전의 Javascript에 대한 지식을 확인할 필요는 전혀 없습니다. 이전 Javascript는 오늘날 사용되는 것과는 다른 목적으로 만들어졌습니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































