인프런 커뮤니티 질문&답변

WJ님의 프로필 이미지
WJ

작성한 질문수

[코드팩토리] [입문] 9시간만에 끝내는 코드팩토리의 Javascript 무료 풀코스

Getter and Setter (게터와 세터)

클래스를 써야할때와 함수를 써야할때

작성

·

186

0

17강에서 class도 함수로 인식한다 라고 하셨고

포맷도 함수와 같다고 생각되는데,

어떻게 구별해서 사용해야 하나요?

언제 클래스를 써야하고,

언제 함수를 써야하는지가 잘 인식되지 않아서요.

답변 2

0

class 와 function 모두 내부적으로는 Function Object가 맞습니다.

하지만 코드팩토리님이 말씀 주신 부분 처럼 목적에 따라 다르게 사용되는데요.

class를 사용하는 경우는 인스턴스의 생성이 주 목적입니다. (객체와는 다른 부분이 있어 인스턴스라고 명명하겠습니다.)

class를 사용하게 되면 해당 함수는 무조건 new 연산자를 통해서만 호출이 가능하며, 이를 통해 인스턴스의 생성 목적임을 강하게 강제하게 됩니다. 즉 일반 함수를 호출 하는 것처럼 사용할 수 없게 되는 것이죠.

function 키워드를 사용해 함수를 구현하는 경우, 가장 큰 목적은 기능의 구조화라고 생각하는데요. 전역 공간에 모든 코드를 다 작성할 수 있지만 function 키워드를 통해 함수를 구현하는 경우, 함수 스코프를 활용할 수 있어 내부에서만 사용하는 로컬 변수를 정의할 수 있습니다.

또, 특정 목적에 맞는 기능을 구조화 함으로써 명확한 코드를 작성할 수 있게 도와줍니다. 이 외에도 클로저의 활용 등 다양한 목적으로 사용할 수 있다는 특징이 있습니다.

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

포맷이 함수와 같다는건 무슨 말씀이실까요? 예를 들어서 질문 해주시면 답변 드리겠습니다.

다른 예로 JS의 특성상 많은것들이 "object"로 퉁쳐지는 경향이 있지만 "결국에" 같은거라고 해도 사람이 (개발자)가 보기에 다르기 때문에 적절한 키워드를 사용해주시는게 좋습니다.

마찬가지로 "함수"를 선언하는 것과 "클래스"를 선언하는건 똑같은 기능을 구현했다해도 뉘앙스가 분명 다릅니다. "함수"는 무언가를 실행하겠다는 목적성이 분명히 보이고 "클래스"는 하나의 네임스페이스, 즉 OOP와 관련된 기능이 구현될거라는 암시가 가능합니다.

감사합니다!

WJ님의 프로필 이미지
WJ

작성한 질문수

질문하기