자바스크립트는 왜 변수에 function을 넣는 경우가 많나요?

자바스크립트를 공부중인 주니어입니다.
책을 정독하면서도 잘 이해가 안가서 질문합니다.

함수를 선언할때 그냥 일반적으로 함수 선언해서 사용하는 경우 보다는

const = {
a : function ~~~~
}

같은 형태로 객체안에 넣을 때도 있고

const a = function { ~~ }
같은 형태로 변수에 넣을 때도 있는데

왜 이렇게 쓰는거죠?

스코프 또는 클로저와 연관되어 있을거라 추측은 가지만
정확한 이유가 뭔지 모르겠네요.

image

const c = () => {return 3}
이런식으로 function을 굳이 안써도 됩니다.
물론 return도 안써도 됩니다.
const c = () => 3

  1. 오버라이딩을 막을 수 있습니다. :slight_smile:

  2. function은 영역에서 맨위에 정의됩니다. ( top of scope )

a();
function a(){ console.log(1); }

작동

a();
const a = () => { console.log(1); }

에러

1개의 좋아요

자바스크립트의 함수는 1급객체로 1급객체라 함은 변수에 넣을 수도 있고 함수의 인자로도 넘길 수 있고 함수의 리턴값으로도 넘길 수 있다는 것을 의미합니다.
이러한 특성 덕분에 @bugtype 님께서 말씀하신 것 처럼 const 변수에 넣어서 함수가 바뀌지 않도록 할 수도 있죠. 많이 접하게 되는 callback 함수 팬턴도 다른 함수의 인자로 넘길 수 있기 때문에 가능합니다.

4개의 좋아요

언어적 특성입니다.
함수를 1급 객체로 인자에 넘길 수 있는 유연함 덕분에 로직을 구성하기 쉽고 생산성이 좋습니다.
대신에 헬게이트 스파게티 코드가 되기도 쉽죠ㅎㅎ

2개의 좋아요

객체안에 넣어서 쓸때는 object oriented programming을 할때 많이 쓰는것 같구요
function declaration(function x() {}) 보다는 요새 function expression(변수에 함수를 할당하는것)을 더 많이 쓰는 추세인데 그 이유는 hoisting을 피해 불필요한 오류를 줄이기 위해서 입니다

1개의 좋아요