동기
란, 서버 컴퓨터의 작업이 끝날 때까지 기다린 후 다음 작업을 실행하는 통신이고
비동기
란 서버 컴퓨터의 작업이 끝날 때까지 기다리지 않고 실행하는 통신이다.
JS는 동기식 언어지만지만 async
와 await
명령어를 함께 써서 비동기식으로 작동하게끔 바꾸어줄 수 있다.
JS에 변수를 담아줄 수 있는 요소에는 var, const, let 세 가지가 있다.
하지만 더이상 var를 사용하지 않는다. 그 이유가 바로 호이스팅
때문이다.
쉽게 말해 호이스팅은 위로 끌어올려 지는 것
이다.
console.log(fruit) var fruit = "사과"
라는 코드를 작성했을 경우 에러가 발생하는 것이 아니라 undefined라는 값이 출력된다. 이럴 경우 소스 코드가 길어지게 되면 의도치 않게 다른 값을 출력하는 경우가 생길 수 있기 때문에 var 보다는 const, let 사용을 권장한다.
그렇다면 const와 let은 호이스팅이 일어나지 않을까?
답은 '아니'다. const와 let도 호이스팅이 일어난다. 하지만 var와는 다르게 TDZ(Tempral Dead Zone)으로 분류되기 때문에 변수가 할당되기 전까지는 접근이 불가능해 지고 오류가 출력된다.
console.log(fruit) const fruit = "사과" // Uncaught SyntaxError: Identifier 'fruit' has already been declared
위와 같은 맥락으로 함수를 만들 때도 함수 선언식보다는 표현식이나 화살표 함수로 적어주는 것이 호이스팅을 예비할 수 있다.
코드에 하이라이팅을 주고 싶다면 첫번째 줄 ``` 옆에 사용하고자 하는 프로그램 언어 이름을 적어주면 되는 거였다ㅎㅎ