Backend/JavaScript,NodeJS, Express

[JavaScript] 기본 개념 정리 (호이스팅, 비동기 구현 방식)

jellylucy 2022. 3. 19. 22:16

Q. var, let, const 의 차이점은?

우선 변수 선언방식인데요, 재선언 재할당할 시 차이점이 존재합니다.

먼저 var는 유연한 선언방식입니다. 같은 변수명으로 var로 선언한 뒤, 출력하면 재선언한 값이 출력됩니다.

하지만 코드가 길어지면 변수값을 알아보기 힘든 단점이 있습니다.

 

var 만든 이후, 만들어진 let 변수선언은 재선언함이 불가능합니다.

하지만 재할당은 가능합니다 

    let name = 'bathingape'
    console.log(name) // bathingape

    let name = 'javascript'
    console.log(name) 
    // Uncaught SyntaxError: Identifier 'name' has already been declared

    name = 'react'
    console.log(name) //react

const는 재선언, 재할당 모두 불가능합니다.

상수를 만드는 것.

    const name = 'bathingape'
    console.log(name) // bathingape

    const name = 'javascript'
    console.log(name) 
    // Uncaught SyntaxError: Identifier 'name' has already been declared

    name = 'react'
    console.log(name) 
    //Uncaught TypeError: Assignment to constant variable.

Q. 호이스팅이란 무엇인가요?

자바스크립트에서 선언하기 전에 호출해도 오류가 발생하지 않는 상황을 말할 때 호이스팅때문이라고 말하는데요

코드 실행하기 전에 변수와 함수 선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상을 말한다.

 

자바스크립트는 코드 실행 전에, 엔진이 코드에 선언된 변수와 함수가 무엇이 있는지 확인한다.

이 때 호이스팅을 하는데 변수의 선언과 초기화(undefined)을 같이 시켜버린다.

그리고 var 같은 경우, 함수만! 지역변수로 호이스팅이 되고 나머지는 전역변수로 호이스팅한다.

let은 안된다.

 

let의 경우

선언 전 호출을 할 때, 불가하다. TDZ 접근불가 존이기 때문이다 일시적 사각지대.


Q. 동기와 비동기 차이점은 무엇인가?

우선 차이점은 동기는 순서대로 처리하는 것이고, 

비동기는 한번에 여러 일을 동시에 수행하는 것이다. 

동기의 장점은 요청응답을 확인하는 것을 중요시하고 일의 순서가 보장되고

비동기의 장점은 응답이 오지 않아도, 새로운 요청을 보낼 수 있으니까 빠르다. 

 

자바스크립트에서 비동기 구현 방식은 3가지를 얘기할 수 있다. 

콜백함수 : 매개변수로 전달된 함수. 나중에 호출될 함수. 

promise : 연속적으로 메소드를 호출할 수 있다는 장점 존재 

async/await : 함수 앞에 async을 붙이고, 함수 내에서 비동기처리로직을 수행하는 메소드 앞에 await을 붙여준다.

이 때 await 메서드는 Promise 객체를 반환하는 함수이다.