LHJ

I'm a FE developer.

21. Abstract Loop & Lazy Execution - hoisting

12 Aug 2020 » codespitz_re

hoisting

함수 코드를 작성할 때 함수 선언문은 사용하지 말고 표현식을 사용하라는 말을 들어본적이 있을 것이다.
기본적으로 자바스크립트에서 함수는 ‘값’이기 때문에 함수를 선언하지 않고 표현식으로 사용하는 것이 맞다.
그래야지 hoisting에 의존하지 않고, 어느 시점에 함수가 만들어졌는지를 코드로 명확하게 인지할 수 있다.
이러한 이유로 선언문을 금지하고 못 쓰게하는 경우도 많다.
린트에도 그런 룰이 있다.

Class도 마찬가지로 표현식으로 사용하자.

클래스는 함수와 달리 hoisting 기능이 없다고 한다.
하지만 이 또한 개발자들 사이에서 편이성을 고려해 표현식으로 쓰는 곳도 있다.

class className {

}

보통 위와 같이 작성된 클래스를 많이 봤을 것이다.

const className = class {

}

위와 같이 작성하는 경우도 많다.

class className {

}

여기서 질문 : 위의 className은 let일까 const일까?
위의 className에 다른 값을 할당할 수 있나?
할 수 있다. let이기 때문이다.
이래서 표현식으로 사용하는 것이 좋다.
어떤 면에서 봐도 문법적으로 변수에 할당하는 표현식이 더 정확하기 때문에 해당 방법을 추천드린다.